使用let宣告變數

2021-10-02 06:40:57 字數 645 閱讀 7877

es5宣告變數的問題

1.全域性變數掛載到全域性物件:全域性物件成員汙染問題。

let宣告的變數不會掛載到全域性物件。

2.允許重複的變數宣告,導致變數被覆蓋。

let宣告的變數不允許當前作用域範圍內重複宣告。

3.變數提公升:怪異的資料訪問,閉包問題。

使用let不會有變數提公升,因此,不能在定義變數之前使用它

底層實現上,let宣告的變數實際上也會有提公升,但是,提公升後會將其放入到「暫時性死區」,如果訪問的變數位於暫時性死區,則會報錯。當**執行到公司變數的宣告語句時,會將其從暫時性死區移除。

在迴圈中,用let宣告的迴圈變數會特殊處理,每次進入迴圈體都會開啟乙個新的作用域,並且將迴圈變數繫結到該作用域(每次迴圈,使用的是乙個全新的迴圈變數)。

在迴圈中使用let宣告的迴圈變數,在迴圈結束後會銷毀。

for

(let i =

0; i <

10; i++)}

console.

log(i)

//報錯

console.

log(name)

;//報錯

let name =

"abc"

;

let變數宣告總結

let命令有四大主要特性 存在塊級作用域,沒有變數提公升,暫時性死區,不允許重複宣告。記憶 塊作沒變,暫死不重 這都是和es5的var變數特性相反的。var的作用域是函式級的。let命令宣告的變數只在其塊級作用域中有效,就是 中。console.log a 出錯 not defined consol...

使用let和const宣告變數和常量

1 let宣告的變數沒有提公升 let宣告的變數也沒提公升,僅僅是沒有初始化 console.log a let a 110 cannot access a before initialization 2 let 配合 也可以形成塊級作用域 if true 中被訪問到 出了塊就訪問不了 let b ...

ES6 let變數宣告

var 宣告的變數在window上 用let或者const去宣告變數,這個變數不會被放到window上 array.foreach function currentvalue,index,arr thisvalue 如果瀏覽器對let已經支援了,其實絕大部分情況下var都可以被替換成let,以後盡量...