在 ES6 (ECMAScript 2015) 中,let 和 const 是两个新的关键字,可以用来声明变量。相比于 var,它们具有更严格的作用域和不同的特性。本文将详细介绍 let 和 const 的使用方法和注意事项。
let
let 声明的变量具有块级作用域,只在声明它的代码块内有效。这意味着在代码块外部无法访问它。
if (true) { let x = 10; } console.log(x); // ReferenceError: x is not defined
let 可以重复声明同名变量,但是在同一作用域内只会有一个实例,而且不会被提升。
let x = 10; let x = 20; // SyntaxError: Identifier 'x' has already been declared
console.log(x); // ReferenceError: x is not defined let x = 10;
let 声明的变量可以被修改,但是不能被重新声明。
let x = 10; x = 20; console.log(x); // 20
const
const 声明的变量也具有块级作用域,但是它声明的是常量,一旦声明就不能被修改。如果尝试修改常量的值,会抛出 TypeError 错误。
const x = 10; x = 20; // TypeError: Assignment to constant variable.
const 声明的变量必须在声明时初始化,否则会抛出 SyntaxError 错误。
const x; // SyntaxError: Missing initializer in const declaration
const 声明的对象和数组可以修改其属性或元素,但是不能重新赋值。
const obj = {x: 10}; obj.x = 20; console.log(obj); // {x: 20}
const arr = [1, 2, 3]; arr[0] = 0; console.log(arr); // [0, 2, 3]
总结
let 和 const 是 ES6 中新增的关键字,用于声明变量。它们具有块级作用域和不同的特性。let 声明的变量可以重复声明、被修改,但是不会被提升;const 声明的变量是常量,不能被修改,但是声明的对象和数组可以修改其属性或元素。在实际开发中,我们应该根据变量的特性选择合适的关键字进行声明。
参考链接
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6583d840d2f5e1655dea7674