在ES6中,let 和 const 是用于声明变量的两个新关键字,相较于之前的 var,它们具有一些新的特性。

1. let 关键字:

  •  let 声明的变量具有块级作用域,而不是函数级作用域。这意味着在 {} 内声明的变量只在这个块内部有效。

{
    let x = 10;
    console.log(x); // 10
}

console.log(x); // ReferenceError: x is not defined

  •  可以在相同作用域内重新声明同名的 let 变量,但不允许在同一块级作用域内重复声明。

let x = 10;
let x = 20; // SyntaxError: Identifier 'x' has already been declared

  •  let 声明的变量不会被提升(hoisted)到作用域顶部,而是留在它所在的块级作用域。

console.log(y); // ReferenceError: y is not defined
let y = 5;

2. const 关键字:

  •  const 用于声明常量,一旦被赋值,就不能再被重新赋值。

const PI = 3.14;
PI = 3.14159; // TypeError: Assignment to constant variable.

  •  const 具有块级作用域,同样不会被提升。

{
    console.log(z); // ReferenceError: z is not defined
    const z = 30;
}

  •  如果 const 声明的是对象,对象本身是可以修改的,但不能再指向其他对象。

const person = {
    name: "John",
    age: 25
};

person.age = 26; // 合法
person = {}; // TypeError: Assignment to constant variable.

一般来说,推荐在声明变量时尽量使用 const,除非你确定该变量的值会发生改变。这样有助于提高代码的可读性和可维护性。当需要重新赋值时,再考虑使用 let。


转载请注明出处:http://www.zyzy.cn/article/detail/4662/ES6