let和const命令

let和var的一些區(qū)別

  1. var存在變量提升,let不存在變量提升
console.log(a)    //undefined
console.log(b)    //"ReferenceError: a is not defined
var a=1
let b=2

暫時(shí)性死區(qū)(temporal dead zone,簡(jiǎn)稱 TDZ)

a=2    //"ReferenceError: a is not defined
let a
console.log(typeof keke)    //undefined
console.log(typeof a)    //"ReferenceError: a is not defined
let a

暫時(shí)性死區(qū)的本質(zhì)就是,只要一進(jìn)入當(dāng)前作用域,所要使用的變量就已經(jīng)存在了,但是不可獲取,只有等到聲明變量的那一行代碼出現(xiàn),才可以獲取和使用該變量。

  1. let不可以重復(fù)聲明
let a=1
let a=2  //"SyntaxError: Identifier 'a' has already been declared
  1. 塊級(jí)作用域
{
    var a=1
}
console.log(a)    //1
{
    let b=1
}
console.log(b)    //"ReferenceError: b is not defined

const用法與let一致,區(qū)別在于const聲明只讀常量

const A=1
A=2    //"TypeError: Assignment to constant variable.

const實(shí)際上保證的,并不是變量的值不得改動(dòng),而是變量指向的那個(gè)內(nèi)存地址不得改動(dòng)。對(duì)于簡(jiǎn)單類型的數(shù)據(jù)(數(shù)值、字符串、布爾值),值就保存在變量指向的那個(gè)內(nèi)存地址,因此等同于常量。但對(duì)于復(fù)合類型的數(shù)據(jù)(主要是對(duì)象和數(shù)組),變量指向的內(nèi)存地址,保存的只是一個(gè)指針,const只能保證這個(gè)指針是固定的

const A={}
A.a=1
console.log(A)    //Object {a: 1}
A=['a','b']    //"TypeError: Assignment to constant variable.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • let 和 const 命令 let 命令 塊級(jí)作用域 const 命令 頂層對(duì)象的屬性 gl...
    安小明閱讀 997評(píng)論 0 0
  • let 命令 塊級(jí)作用域 const 命令 頂層對(duì)象的屬性 global 對(duì)象 let 命令 基本用法 ES6 新...
    嘉奇呦_nice閱讀 1,648評(píng)論 0 2
  • let 命令 塊級(jí)作用域 const 命令 頂層對(duì)象的屬性 global 對(duì)象 let 命令 基本用法 ES6 新...
    卞卞村長(zhǎng)L閱讀 620評(píng)論 0 0
  • ES6聲明變量的方法:var、function、let、const、import、class let命令用于聲明變...
    張果果閱讀 185評(píng)論 0 0
  • 1.let命令 基本用法 ES6新增了let命令,用來(lái)聲明變量。它的用法類似于var,但是所聲明的變量,只在let...
    冷洪林閱讀 210評(píng)論 0 1