在 JavaScript 中, var
是定义变量的关键字。但是,在 ECMAScript 6 (ES6)(a.k.a. ECMAScript 2015)中引入了两个新的关键字 let
和 const
, 它们可以用来代替 var
。这篇文章将会介绍 let
和 const
的用法以及为什么它们比 var
更好,并提供一些示例代码。
let 声明
let
可以像 var
一样用于声明变量,但有一些关键区别。 最显著的区别是,使用 let
声明的变量具有块级作用域。这意味着,如果你在一个块中声明一个变量,那么它只能在该块范围内访问。举个例子:
// javascriptcn.com 代码示例 function example() { let x = 1; if (true) { let x = 2; console.log(x); // 输出2 } console.log(x); // 输出1 }
上面的例子中,我们在函数中声明了一个变量x = 1
,然后在 if 块中又声明了同名变量 x=2
,再分别输出它们的值。输出结果显示在块级作用域中,内部变量 x
覆盖了外部变量 x
,但不会影响到块外部的全局变量 x
。
const 声明
const
关键字也可用于声明变量, 与let相似,它拥有块级作用域,但被 const
声明的变量是不可重新赋值的常量。 这意味着您不能在初始化后更改变量的值。
function example() { const x = 1; x = 2; //TypeError: Assignment to constant variable. }
上面的示例试图更改 const
变量 的值会引发 Type Error。除非您需要保证变量不再更改,否则应始终使用 let
来声明变量。
const 和 let 对比
现在你可能会问:“何时使用 const
或 let
?” 答案很简单: 需要可重复赋值的变量就用 let
,如果不需要可重复赋值就用 const
。
使用场景建议
- 如果变量都是恒定的(never changes)使用
const
- 如果变量会被修改(reassigned)使用
let
;
这种区别的最佳实践通常被称为“常量分离”,即将能存储在常量中的值与不能存储的值分离,以使代码更易于维护和理解。
总结
请尽量避免使用 var
。 ES6 中的 let
和 const
更好地区分了变量是可重复赋值还是不可改变的,有助于提高代码质量和清晰度。
// javascriptcn.com 代码示例 function example() { const MY_CONST = 'value'; let myValue = 0; console.log(MY_CONST); // 输出"value" console.log(myValue); // 输出0 myValue = 1; console.log(myValue); // 输出1 if (true) { const MY_CONST = 'new value'; console.log(MY_CONST); // 输出"new value" } console.log(MY_CONST); // 输出"value" }
上面的代码示例中我们定义了一个MY_CONST
常量 和 一个 myValue
变量。 变量可以重新分配新值,而常量不行。
参考链接:
- MDN - let
- [MDN - const](https://developer
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652918e37d4982a6ebba8f72