ECMAScript 6 变量及常量的声明

ES6规范中,引入了新的关键字 let 用于声明变量,以及 const 用于声明常量

let

letvar 的用法类似

let a = 123;

不同之处在于:

let 的作用于只在其所属的代码块

var a = [];
for (var i = 0; i < 3; i++) {
    var c = i;
    a[i] = function() {
        console.log(c);
    };
}
a.forEach(item => {
    item();
})
// 4
// 4
// 4

var b = [];
for (var i = 0; i < 3; i++) {
    let c = i;
    b[i] = function() {
        console.log(c);
    };
}
b.forEach(item => {
    item();
})
// 0
// 1
// 2

let 不会发生 “变量提升” 的现象

function f1() {
    let n = 5;
    if (true) {
        let n = 10;
    }
    console.log(n); // 5
}
f1();

let 不允许在相同作用域内重复声明同一个变量

{
    let a = 10;
    var a = 1;
}
// Uncaught SyntaxError: Identifier 'a' has already been declared
{
    let a = 10;
    let a = 1;
}
// Uncaught SyntaxError: Identifier 'a' has already been declared

const

const 用于常量声明,一旦声明,参数的值就不能修改

const PI = 3.1415;
console.log(PI) // 3.1415
PI = 3;
console.log(PI) // 3.1415

最后更新于