JS執(zhí)行環(huán)境訪問

1、javascript沒有塊級作用域,無塊作用域限制,局部環(huán)境銷毀

function changeColor(){
       for(var i=0;i<3;i++){
        var num=0;
         num=i
      }
      alert(num)//3
}
console.log(num)//undefined

(1)無塊作用域限制:在這里alert(num)正常輸出num的值,因為javascript沒有塊級作用域,alert()不會訪問不到num(但在c,c++,Java中有塊級作用域)
(2)局部環(huán)境銷毀:num仍然作為一個變量被寫入changeColor執(zhí)行環(huán)境對象,因為changeColor執(zhí)行環(huán)境在執(zhí)行完后,環(huán)境銷毀,num變量不存在

2、不使用var聲明的變量被寫進全局環(huán)境

function changeColor(){
       for(var i=0;i<3;i++){
         num=i;
      }
      alert(num)
}
console.log(num)

//console打印出num值,使用var的變量被添加到最近的執(zhí)行環(huán)境中,不使用var添加到全局環(huán)境中

3、變量屬于哪個域是定義時確定不是調(diào)用時確定,變量搜索順序為從內(nèi)到外

var color="red"
var fu=function(){
     console.log(color)
     var color="blue"
}
fu()
//結(jié)果:undefined
var color="red"
var fu=function(){
     console.log(color)
}
fu()
//結(jié)果:red

(1)變量屬于哪個域是定義時確定不是調(diào)用時確定:定義函數(shù)時,fu對象域中有變量color,全局環(huán)境中有變量color,
(2)執(zhí)行時console.log()從內(nèi)到外搜索到color屬于fu對象,但此時color只聲明未被初始化,結(jié)果為undefined

4、全局對象:在任何地方可被訪問,模塊化編程避免使用
最外層定義變量
全局對象的屬性
未定義直接賦值的變量

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容