一個(gè)自執(zhí)行的匿名函數(shù)代碼如下: var a = 'World!';
(function () { console.log(window.a); //world;
console.log(a) //undefined;
if (typeof a=== 'undefined') { var a= 'Jack'; console.log('Goodbye ' + a);
} else { console.log('Hello ' + a);
}
})(); console.log(a)在js中沒有塊級的概念,函數(shù)里可以訪問到函數(shù)外的全局變量,但函數(shù)外卻無法訪問函數(shù)里面的局部變量,按照這樣理解為什么在自執(zhí)行的匿名函數(shù)里面無法訪問到a,而使用window.a卻可以訪問到,根據(jù)作用域鏈的查找來看,他不應(yīng)該可以往上查找到a嗎?為什么要window.a行?在匿名函數(shù)里面打印this的值也是window來著,他和匿名函數(shù)外是同一個(gè)this之下吧,就有點(diǎn)說不通為什么在匿名函數(shù)里面直接訪問a會是undefined。。。誰能解釋一下匿名函數(shù)中的作用域鏈查找的過程?。?
請教一道js面試題
喵喵時(shí)光機(jī)
2018-08-11 10:09:53