關於let作用域

2021-08-18 17:20:54 字數 347 閱讀 7487

當乙個花括號內宣告用let,此時後花括號內的所有指向(用let宣告的變數)的變數的作用域都被侷限到了這或括號內;

例如:for(let i = 0;i<10; ++i)

test();//結果為9,因為test是全域性函式,但是i生成了塊級作用域,每次生成test函式都會覆蓋前乙個test函式最後test的i就是最後的i了

var arr = ;

for(let i = 0;i<10; ++i)

arr[5]();//結果是5,因為當為每乙個arr的元素建立函式時,此時函式的作用域是i建立的這個塊級作用域中,當呼叫arr[5]();他會找建立這個函式時的i,所以就是5;

最後找到的乙個文章:

關於let 和 var 的作用域問題

直接來乙個經典案例 1.下面的結果是什麼?為什麼?for var i 0 i 5 i 1000 settimeout是非同步執行的,1000毫秒後向任務佇列裡新增乙個任務,只有主線上的全部執行完才會執行任務佇列裡的任務,所以當主線程for迴圈執行完之後 i 的值為5,這個時候再去任務佇列中執行任務,...

JS 作用域 var與let 區別

在es6入門時,最讓人傻傻分不清楚的就是var與let帶來的作用域的苦惱。最近又一次翻看阮一峰老師的文章,重新有了自己的小結。分析 var a for var i 0 i 10 i a 6 10var a for let i 0 i 10 i a 6 6以上兩段 區別在於var與let使用的作用域不...

var和let 以及js作用域問題

今天學習es6 的時候發現了var 和 let 之間的不同。var a for var i 0 i 10 i a 6 6 var設定的是全域性變數。陣列中儲存的是指向i的記憶體位址,所以在迴圈中i一直在變化,最後在10就不動了。let設定的是區域性變數,宣告的變數僅在塊級作用域內有效。變數i只在本輪...