js词法作用域规则
function foo() {
console.log( a ); // 2不是3
}
function bar() {
var a = 3;
foo();
}
var a = 2;
bar();
js中的作用域就是詞法作用域?
詞法作用域是一套關(guān)于引擎如何尋找變量以及會在何處找到變量的規(guī)
則。 詞法作用域最重要的特征是它的定義過程發(fā)生在代碼的書寫階段( 假設(shè)你沒有使用
eval() 或 with)
而動態(tài)作用域并不關(guān)心函數(shù)和作用域是如何聲明以及在何處聲明的, 只關(guān)心它們從何處調(diào)
用。 換句話說, 作用域鏈?zhǔn)腔谡{(diào)用棧的, 而不是代碼中的作用域嵌套.
所以js的作用域是詞法作用域即從函數(shù)書寫時的位置尋找.
=====================================================================
主要區(qū)別: 詞法作用域是在寫代碼或者說定義時確定的, 而動態(tài)作用域是在運(yùn)行時確定
的。( this 也是! ) 詞法作用域關(guān)注函數(shù)在何處聲明, 而動態(tài)作用域關(guān)注函數(shù)從何處調(diào)用
轉(zhuǎn)載于:https://www.cnblogs.com/a-flydog/p/5527168.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
- 上一篇: 100首超短古诗原文
- 下一篇: 关于C10K、异步回调、协程、同步阻塞