偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

JavaScript變量作用域之我見

開發(fā) 前端
相信大家都知道,JavaScript中變量作用域只有兩種,全局作用域與函數(shù)中的局部作用域,文本就主要探討JavaScript變量作用域。

相信大家都知道,JavaScript中變量作用域只有兩種,全局作用域與函數(shù)中的局部作用域(有人認(rèn)為不同script節(jié)點(diǎn)間也存在一種作用域,稱之為段作用域,理由是在后面的script的節(jié)點(diǎn)中定義的變量,在這個script節(jié)點(diǎn)沒有被解析之前,前面的script節(jié)點(diǎn)是不能訪問這個變量的,這種依賴于代碼解析順序的特殊情況,不在我們這篇文章的討論之列)。

比如下面的代碼:

  1. var a = 1;  
  2. function f(b)  
  3. {      
  4. var c = 2;  

a就是我們聲明的全局變量,c就是我們聲明的局部變量,b作為函數(shù)f的形參,也是一個局部變量。

我們再看下面的代碼:

  1. function outer()  
  2. {  
  3.     var o;     
  4.  function inner()  
  5. {  
  6.         var i;   
  7.    }} 

可以看到o和i都是局部變量,只不過o的作用域范圍為函數(shù)outer的函數(shù)體,而i的作用域范圍為inner的函數(shù)體。

我們再看一段代碼:

  1. var g = 1;    
  2.  function outer(){        
  3.      var o = 1;       
  4.      function inner(){    
  5.    var i = 1;         
  6.     debugger;         
  7.      }         
  8.     inner();      
  9.  }    
  10.  outer(); 

debugger?沒錯,就是debugger。呵呵,我們單獨(dú)運(yùn)行這段代碼,打開瀏覽器的調(diào)試環(huán)境,比如ff瀏覽器的firebug

javascript變量作用域之我見

我們選擇腳本這一項(xiàng),然后查看debugger運(yùn)行時的調(diào)用堆棧情況,可以看到,除了有inner,outer以外,還有一個scope1.html()這么一個函數(shù),這個函數(shù)從何而來的?

我們再看如下代碼:

  1. debugger

javascript變量作用域之我見

可以看到,單獨(dú)運(yùn)行debugger的時候,firebug的調(diào)用堆棧只有一個scope1.html()這個函數(shù)被調(diào)用。

我們知道,此時是沒有任何自定義的函數(shù)被調(diào)用的,那么這個函數(shù)從何而來的?我們不妨做如下大膽猜測,這是瀏覽器的js引擎自動生成的,我們所有的代碼都運(yùn)行在一個瀏覽器預(yù)先定義的一個函數(shù)里,而在這個函數(shù)里聲明的變量,就是我們所謂的全局變量。

這樣,我們就可以以一種一致的方式,去看待JavaScript代碼:所有的代碼都是以函數(shù)方式運(yùn)行的,JavaScript的變量作用域只有一種,那就是函數(shù)的局部作用域。

以上言論純屬個人意見,有不同見解,歡迎拍磚。

ps:

1 關(guān)于scrope1.html()這個函數(shù),在不同的調(diào)試環(huán)境下,命名可能不一樣,比如ie下就是global script code,chrome下就是anonymous function。

2 推薦大家都運(yùn)行一下上面的代碼,查看一下函數(shù)運(yùn)行時的調(diào)用堆棧以及變量的監(jiān)控情況,對于理解JavaScript的作用域、作用域鏈、閉包等概念都有很大的幫助。

原文鏈接:http://www.cnblogs.com/rt0d/archive/2011/04/18/2019242.html

【編輯推薦】

  1. 泄露你的JavaScript技術(shù)很爛的五個表現(xiàn)
  2. 經(jīng)典格斗游戲《街頭霸王》的JavaScript實(shí)現(xiàn)
  3. 九個令人驚嘆的HTML 5和JavaScript實(shí)驗(yàn)
  4. 分享7款超棒的JavaScript網(wǎng)格插件
  5. 對JavaScript中call和apply的理解
責(zé)任編輯:陳貽新 來源: 劉陽的博客
相關(guān)推薦

2013-09-05 10:07:34

javaScript變量

2016-12-19 11:10:32

JavaScript變量作用域

2019-03-13 08:00:00

JavaScript作用域前端

2011-09-06 09:56:24

JavaScript

2020-12-16 11:09:27

JavaScript語言開發(fā)

2021-03-09 08:50:58

JavaScript前端作用域

2017-09-14 13:55:57

JavaScript

2010-01-07 16:16:03

VB.NET變量作用域

2021-10-28 10:26:35

Javascript 高階函數(shù)前端

2020-11-19 07:49:24

JS變量作用域

2011-05-12 18:26:08

Javascript作用域

2015-07-21 13:39:58

Javascript作用域

2010-02-03 16:42:45

C++變量作用域

2024-03-14 11:27:16

C++變量編程

2009-06-01 11:16:48

PHP網(wǎng)站開發(fā)變量作用域

2015-08-18 13:42:42

js作用域鏈變量

2021-12-06 07:15:48

Javascript作用域閉包

2009-11-03 11:40:37

VB.NET共享變量

2021-07-01 11:56:51

JavaScript開發(fā)代碼

2009-03-16 09:39:01

函數(shù)詞法作用域Javascript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號