ES6之const和let

田小菜發表於2019-05-04

一,const和let

  • 共同點:
  1. 都用著宣告;
  2. 都存在塊級作用域;
{
    const a = '澎湃';
    let b = 18;
    // 塊級外不能訪問a和b
}
複製程式碼
  1. 不會變數宣告提升(var存在變數什麼提升);
  2. 同一作用域內,不允許重複宣告;
let a = '珺';
let a = 'pp';
// Uncaught SyntaxError: Identifier 'a' has already been declared
// 報錯,同一作用域內,不允許重複宣告;
複製程式碼
  • 區別:
  1. const 宣告一個只讀的常量。一旦宣告,常量的值就不能改變(如果宣告是一個物件,那麼不能改變的是物件的引用地址)
  2. let通常宣告變數,可以改變;

二,與var

  1. var可以宣告變數和常量。而且沒有塊級作用域;
  2. 存在變數宣告提升;
console.log(a) // undefined
a = 18;
console.log(a) // 18
var a = 22;
console.log(a) // 22

// 上面其實就相當於下面
// js在執行中,會先預解析。將var的宣告提升到最先。
var a;
console.log(a) // undefined
a = 18;
console.log(a) // 18
a = 22;
console.log(a) // 22

// fun函式最優先提升到最前面,所以在fun(3,5)也可以執行並返回8。
// 但並不建議實際開發中這樣玩。
fun(3,5) //8
function fun(a,b){
    return a + b;
}
複製程式碼

相關文章