let變數宣告總結

2021-09-10 09:24:39 字數 1268 閱讀 1982

let命令有四大主要特性:存在塊級作用域,沒有變數提公升,暫時性死區,不允許重複宣告。(記憶:塊作沒變,暫死不重)

這都是和es5的var變數特性相反的。

var的作用域是函式級的。

let命令宣告的變數只在其塊級作用域中有效,就是{}中。

console.

log(a)

;//出錯 not defined

console.

log(b)

;//1

es5中要實現塊級作用域,通常借助立即執行匿名函式來實現:

(

function()

());

console.

log(a)

;//出錯,not defined

但是有了let之後,就像c語言一樣,直接就是:

console.

log(a)

;//出錯, not defined

也正因如此,變數必須在宣告後使用,否則會報錯。

console.

log(a)

;//出錯, not defined

let a =

1;

對比var經典的變數提公升

console.

log(a)

;//undefined

var a =

1;

在塊級作用域內,若存在用let命令宣告的變數,則所在區塊對該變數形成封閉作用域,也就是該變數無視外部的同名變數。而又因為不存在變數提公升,所以在該區塊中,不能在宣告前使用該變數。

var a  =1;

if(true

)

對比var

var a =1;

if(true

)

4、不允許重複呼叫

let不可以在相同作用域內重複宣告同乙個變數,也包括不能和var,const變數名重複

let a =1;

let a =1;

//出錯 let不可重複宣告

var b =1;

let b =1;

//出錯 let不可重複宣告

const c =1;

let c =1;

//出錯 let不可重複宣告

使用let宣告變數

es5宣告變數的問題 1.全域性變數掛載到全域性物件 全域性物件成員汙染問題。let宣告的變數不會掛載到全域性物件。2.允許重複的變數宣告,導致變數被覆蓋。let宣告的變數不允許當前作用域範圍內重複宣告。3.變數提公升 怪異的資料訪問,閉包問題。使用let不會有變數提公升,因此,不能在定義變數之前使...

ES6 let變數宣告

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

詳解let和const變數宣告

let和const在很多任務程師眼裡可能只是變數宣告符,其實錯了!它還是有很多小細節值得注意的,這裡我簡單介紹幾點。一 塊級作用域 在es6之前我們腦海裡應該只存在全域性作用域和函式級作用域,沒有塊級作用域。那麼為什麼要引入塊級作用域呢?相信很多剛入門的同學看到上述 會有所不解,其實在全域性作用域s...