var和let 以及js作用域問題

2021-08-20 13:47:38 字數 401 閱讀 7674

今天學習es6 的時候發現了var 和 let 之間的不同。

var a=;

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

}a[6]();   //6

var設定的是全域性變數。陣列中儲存的是指向i的記憶體位址,所以在迴圈中i一直在變化,最後在10就不動了。 

let設定的是區域性變數,宣告的變數僅在塊級作用域內有效。變數i只在本輪迴圈有效,所以寫入陣列的是本輪的i,每輪的i都是新的變數。具體可以看

讓我深感自己作用域學得不好,所以我在網上查了下js作用域的理解。

首先在函式內部的作用域是

var a=10;

function aaa()

aaa();    //10

var a=10;

function aaa()

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使用的作用域不...

關於let 和 var 的作用域問題

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

let和var的區別1 存在塊作用域

es6 新增了let命令,用來宣告變數。網上看到很多說的let和const存在塊作用域,一直就只記得這句話,不知道具體 中的怎麼回事,今天看到阮一峰老師的部落格,中的乙個例子,才覺得深有體會。a referenceerror a is not defined.b 1這個由let定義的變數a,只在其括...