天天看點

JavaScript中let,const, var的用法和差別

let

作用域:塊級作用域

let a = 1;
{
    console.log(a); // 輸出1
    let b = 2;
    console.log(b); // 輸出2 
}
console.log(a); // 輸出1
console.log(b); //b is not defined
           

重新聲明:否

let techacademy = '初始值ok';

techacademy = '重新配置設定ok';

let techacademy = '重新聲明no';
           

變量提升:否

{console.log(a);let a = 1} // 輸出a is not defined
           

var

作用域:全局變量

var a = 1;
{
    console.log(a); // 輸出1
    var b = 2;
    console.log(b); // 輸出2 
}
console.log(a); // 輸出1
console.log(b); // 輸出2 
           

重新聲明:可

var techacademy = '初始值ok';

techacademy = '重新配置設定ok';

var techacademy = '重新聲明ok';
           

變量提升:可

{console.log(a);var a = 1} // 變量提升初始化後輸出 undefined
           

const

作用域: 塊級作用域

const a = 1;
{
    console.log(a); // 輸出1
    const b = 2;
    console.log(b); // 輸出2 
}
console.log(a); // 輸出1
console.log(b); //b is not defined
           

重新聲明:可

const techacademy = '初始值ok';

techacademy = '重新配置設定no';

const techacademy = '重新聲明no';
           

變量提升:否

{console.log(a);const a = 1} // 輸出a is not defined
# 這裡比較又争議的地方是 const作為常量修飾符,若初始化為undefine後再指派就失去了它的意義,是以若判定必須初始化才為變量提升則const無法變量提升,反之則const也會變量提升
           

繼續閱讀