JS 作用域 var與let 區別

2021-09-14 05:03:22 字數 663 閱讀 1651

在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,只在其括...