你必須知道的Javascript知識(shí)點(diǎn)之"深入理解作用域鏈"的介紹
var xxxVar1 = 1;
var outer = function(){
var xxxVar2 = 2;
var results = [];
for(var i = 0; i< 3; i++)
{
var inner = function(){
var xxxVar3 = 3;
return xxxVar3 + xxxVar2 +xxxVar1 + i;
}
results .push(inner);
}
return results;
}
var xxxVar1 = 100;
var xxxVar2 = 200;
var xxxVar3 = 300;
var results = outer();
results[0]();
results[1]();
results[2]();
執(zhí)行結(jié)果
代碼示例
var fun = function(){
alert(name);
var name = '段光偉';
}
當(dāng)執(zhí)行這個(gè)函數(shù)時(shí)候時(shí)(fun()),函數(shù)體還沒(méi)執(zhí)行到,當(dāng)前的活動(dòng)對(duì)象為[{ name: undefined }],因此fun()執(zhí)行的結(jié)果為:

代碼示例
var a = 1;
//步驟1:[ { a: 1, outer: undefined } ]
var outer = function(){
//步驟3:[ { b: undefined, inner: undefined } ,{ a: 1, outer: function } ]
var b = 2;
var inner = function(){
//步驟5:[ {}, { b: 2, inner: function } ,{ a: 1, outer: function } ]
return a + b;
}
//步驟4:[ { b: 2, inner: function } ,{ a: 1, outer: function } ]
return inner();
}
//步驟2:[ { a: 1, outer: function } ]
outer();
作用域鏈規(guī)則規(guī)則1
javascript一般運(yùn)行在一定的宿主中,每個(gè)宿主都會(huì)提供一個(gè)“全局對(duì)象”,或者叫“全局活動(dòng)對(duì)象”,這個(gè)全局對(duì)象是所有作用域鏈的根節(jié)點(diǎn)。
規(guī)則2“取值操作”(如:alert(xxxVar))的規(guī)則是,沿著作用域鏈依次查找名稱為“xxxVar”的變量,返回第一個(gè)找到的值,如果找不到就拋出異常(ReferenceError: xxxVar is not defined)。
規(guī)則3“賦值操作”(如:xxxVar = '段光偉')的規(guī)則是,沿著作用域鏈依次查找名稱為“xxxVar”的變量,覆蓋第一個(gè)找到的值,如果找不到就將“xxxVar”添加到全局對(duì)象中。
備注“閉包”這個(gè)概念就是通過(guò)“作用域鏈”實(shí)現(xiàn)的,而C#是通過(guò)編譯器實(shí)現(xiàn)的,.NET并不支持。- JavaScript中的作用域鏈和閉包
- js 函數(shù)的執(zhí)行環(huán)境和作用域鏈的深入解析
- js作用域及作用域鏈概念理解及使用
- 深入Javascript函數(shù)、遞歸與閉包(執(zhí)行環(huán)境、變量對(duì)象與作用域鏈)使用詳解
- javascript 嵌套的函數(shù)(作用域鏈)
- 深入理解JavaScript高級(jí)之詞法作用域和作用域鏈
- 深入理解JavaScript系列(14) 作用域鏈介紹(Scope Chain)
- 深入理解JavaScript作用域和作用域鏈
- JavaScript 作用域鏈解析
- JavaScript作用域鏈?zhǔn)褂媒榻B
- javascript從作用域鏈談閉包
- JavaScript作用域與作用域鏈深入解析
- 結(jié)合代碼圖文講解JavaScript中的作用域與作用域鏈
相關(guān)文章
KnockoutJS 3.X API 第四章之?dāng)?shù)據(jù)控制流with綁定
這篇文章主要介紹了KnockoutJS 3.X API 第四章之?dāng)?shù)據(jù)控制流with綁定的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-10-10javascript中clipboardData對(duì)象用法詳解
這篇文章主要介紹了javascript中clipboardData對(duì)象用法,詳細(xì)分析了clipboardData對(duì)象的功能及相關(guān)使用技巧,需要的朋友可以參考下2015-05-05

解決layui的使用以及針對(duì)select、radio等表單組件不顯示的問(wèn)題

JavaScript實(shí)現(xiàn)滑塊補(bǔ)圖驗(yàn)證碼效果

詳解weex默認(rèn)webpack.config.js改造