在之前的 JavaScript 版本中,我们只能使用 var
关键字声明变量,但 ES6 标准引入了两个新的关键字 let
和 const
,这两个关键字可以很好地解决一些 JS 变量声明问题,本文将详细介绍它们的具体用法和区别。
let
let
关键字用于 JavaScript 中的块级作用域声明变量,相较于 var
关键字,它的作用域更加明确。在使用 let
声明变量时,该变量只在当前代码块(大括号包含的代码集合)内有效,在代码块结束后会被销毁。这一特点在代码编写中经常用来解决代码中的变量作用域问题。
代码示例:
function foo() { var x = 1; if (true) { let y = 2; } console.log(x); // 输出 1 console.log(y); // 报错: y is not defined }
上述代码中,在 if
代码块内部使用 let
声明变量 y
,并在代码块结束前尝试输出 y
,会提示该变量未定义,因为其作用域仅限于 if
代码块内。
const
const
关键字同样用于声明变量,但它声明的变量为常量,一旦声明后,就无法再对该变量进行值的修改,否则会导致语法报错。在实际开发中,我们可以使用 const
声明一些不希望被改变的常量,如数学常数等。
代码示例:
const a = 123; a = 456; // 报错:Assignment to constant variable.
上述代码中,使用 const
声明变量 a
,并尝试在后续代码中修改 a
的值,会触发语法错误提示。
需要注意的是,使用 const
声明的常量在声明后必须立即赋值,否则将无法通过语法检测。同时,如果 const
关键字声明的变量为对象(包括数组),则该对象的引用地址不可修改,但对象本身的内容仍然可以修改。
代码示例:
const person = { name: 'Lucy', age: 18 }; person.age = 20; // 不会报错,成功修改属性值 person = { name: 'Lily', age: 20 }; // 报错:Assignment to constant variable.
上述代码中,虽然 const
声明的 person
对象本身无法重新赋值,但其属性值仍然可以修改。
总结
let
和 const
是 ES6 标准中引入的两个新关键字,它们可以很好地解决 JS 中的变量作用域问题和常量值修改问题。在实际开发中,我们应该灵活使用这两个关键字,并根据具体的业务逻辑和团队规范进行优化和调整。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651d25a095b1f8cacd4aa498