let var const的區(qū)別

1. ES6

  • var:在ES6出來之前,聲明變量都只能使用var關(guān)鍵字
  • letconst都是ES6出來的新語法

2. 變量提升

  • var會進(jìn)行變量提升
    console.log(a) //undefined
    var a = 1
    
    letconst這么打印的時候,會報錯。
  • letconst 不能變量提升
    console.log(b) //報錯: b is not defined
    let b = 2
    
    報錯: b is not defined
    console.log(c) //報錯: c is not defined
    let c = 3
    
    報錯: c is not defined

3. 作用域

  • var 是全局變量。
    function fn(){
      if(true){
        console.log(a)
      }else{
        var a = 1
        console.log(2)
      }
    }
    fn() // undefined
    
    這段代碼打印出來的事undefined,變量a會提升到if的上面去
  • constlet 都是塊級局部變量。
    {
      let a
    }
    console.log(a) //undefined
    
    打印出來是undefined。
    {
      const a =1
    }
    console.log(a) //undefined
    
    打印出來也是undefined。

4. 申明賦值

  • varlet 都不需要在申明的同時賦值
    var a 
    console.log(a) //undefined
    
    let b
    console.log(b) //undefined
    
    打印出來的都是undefined
  • const 必須在聲明的同時賦值,不然就會報錯
    const a
    

    編譯器就會報錯:

    控制臺報錯:

    SyntaxError: Missing initializer in const declaration
    

5. 賦值更改

  • varlet都可以在作用域內(nèi)改變聲明的變量的值
    var a = 1
    a = 2
    console.log(a) //2
    
    打印出來的是2。
    let b = 1
    b = 2
    console.log(b) //2
    
    打印出來的是2。
  • const聲明的變量在作用域內(nèi),基本數(shù)據(jù)類型賦值不能更改。如果是復(fù)雜類型,就可以修改。
    const c = 1
    c = 2
    
    編譯器報錯:
    Attempt to assign to const or only variable
    
    控制臺報錯:
    TypeError: Assignment to constant variable.
    

6. 同名變量

  • var 可以聲明同名變量
    var a = 1
    var a = 2
    console.log(a) //2
    
    聲明并賦值成功,打印出來的是2。
  • letconst在作用域內(nèi)不能聲明同名變量
    const a = 1
    const a = 2
    
    報錯:
    SyntaxError: Identifier 'a' has already been declared
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容