在es6入門時,最讓人傻傻分不清楚的就是var與let帶來的作用域的苦惱。最近又一次翻看阮一峰老師的文章,重新有了自己的小結。
**分析
var a = ;
for (var i = 0; i < 10; i++) ;
}a[6](); // 10
var a = ;
for (let i = 0; i < 10; i++) ;
}a[6](); // 6
以上兩段**區別在於var與let使用的作用域不同。
1.var 變數的作用域是全域性,而let 是區域性的塊作用域即for迴圈內。
2.明確迴圈內部的i與console.log(i)中的i是在不同的作用域中,它們有各自單獨的作用域。
3.全域性變數唯一性,var 宣告的變數i在迴圈中被不斷覆蓋最終只是唯一的10,因此在外部呼叫中無論呼叫a陣列的哪乙個,最終都是10。
4.區域性使用 let 定義時只在該函式作用域內部有效。例子如下:
for (let i = 0; i < 10; i++)
console.log(i);
// referenceerror: i is not defined
個人小結,如有錯誤,望各位大佬指正。 var和let 以及js作用域問題
今天學習es6 的時候發現了var 和 let 之間的不同。var a for var i 0 i 10 i a 6 6 var設定的是全域性變數。陣列中儲存的是指向i的記憶體位址,所以在迴圈中i一直在變化,最後在10就不動了。let設定的是區域性變數,宣告的變數僅在塊級作用域內有效。變數i只在本輪...
js作用域及var與無var的區別
在js裡的全域性環境就是乙個物件,這個物件也是js執行的根,對瀏覽器中的js,這個物件就是window物件。對全域性js語句來說,window物件就相當於當前作用域。當我們寫下 varmyjs start 就是定義了window作用域的乙個變數myjs,當我們這樣寫 myjs start 就是定義了...
let和var的區別1 存在塊作用域
es6 新增了let命令,用來宣告變數。網上看到很多說的let和const存在塊作用域,一直就只記得這句話,不知道具體 中的怎麼回事,今天看到阮一峰老師的部落格,中的乙個例子,才覺得深有體會。a referenceerror a is not defined.b 1這個由let定義的變數a,只在其括...