1.var 是一個函數(shù)作用域硫豆,let和const是一個塊級作用域凿渊;
定義一個塊級作用域:
{
? ? let a = 1;
? ? var b =2;
}
console.log(a);
console.log(b);
打印結(jié)果:a is not defined
? ??????????????????2
var 在塊級作用域里可以提升到外邊而let const 不行;
const是聲明常量的挫鸽,
2.變量提升
所謂變量提升就是書寫的位置和代碼定義的位置不同说敏,舉個例子:
console.log("a" + a);
var a = 1;
這樣打印出的結(jié)果:
a undefined
講解:var可以做到變量提升作用他相當(dāng)于:
var a;
console.log("a" + a);
a = 1;
從上面可以看到其實a在上面已經(jīng)定義了丢郊,只是console的時候沒有去定義a的值 所以打印出?undefined;
想對比ES6的 let就沒有var的變量提升作用了盔沫,看下面的例子
console.log("b" + b);
let b = 2;
打印結(jié)果:b is not defined;
講解:let 沒有變量提升的作用 所有在console之前就沒有定義b,所以會打印出 b is not defined;