在 ES6 中,var
不再是唯一的声明变量的方式。const
和 let
的引入,让开发者有了更多的选择。本文将详细介绍 const
和 let
的用法,以及它们带来的好处。
const
const
用于声明常量,一旦声明,其值不可更改。常量的好处在于,一旦确定了值,就可以避免在代码中被错误地修改。
const PI = 3.14159; PI = 3; // TypeError: Assignment to constant variable.
上面的代码中,第二行会报错,因为常量 PI
的值已经被定义为 3.14159
,不能再被更改。
需要注意的是,const
定义的常量是有块级作用域的,与 let
相同。这意味着在一个块级作用域内,不能重复定义同名的常量。
if (true) { const a = 1; const a = 2; // SyntaxError: Identifier 'a' has already been declared }
上面的代码中,第四行会报错,因为常量 a
已经在当前块级作用域内被定义了。
let
let
用于声明变量,与 const
相比,其值可以被修改。let
的好处在于,可以避免使用 var
带来的问题。
let a = 1; a = 2; console.log(a); // 2
上面的代码中,变量 a
的值可以被修改,因为它是用 let
声明的。
需要注意的是,let
定义的变量也有块级作用域,与 const
相同。在一个块级作用域内,不能重复定义同名的变量。
if (true) { let b = 1; let b = 2; // SyntaxError: Identifier 'b' has already been declared }
上面的代码中,第四行会报错,因为变量 b
已经在当前块级作用域内被定义了。
好处
使用 const
和 let
的好处在于,可以避免使用 var
带来的问题。
避免变量提升
使用 var
声明的变量,会存在变量提升的问题。这意味着在一个作用域内,变量可以在声明之前被访问。
console.log(a); // undefined var a = 1;
上面的代码中,变量 a
在声明之前被访问,输出结果为 undefined
。
使用 let
和 const
声明的变量不存在变量提升的问题,变量只能在声明之后访问。
避免重复定义变量
使用 var
声明的变量,可以在同一个作用域内重复定义同名的变量。
var a = 1; var a = 2; console.log(a); // 2
上面的代码中,变量 a
被重复定义了,输出结果为 2
。
使用 let
和 const
声明的变量在同一个块级作用域内不能重复定义同名的变量,能够避免这个问题。
总结
const
和 let
是 ES6 中引入的两种新的声明变量的方式。const
用于声明常量,其值不可更改;let
用于声明变量,其值可以被修改。两者都有块级作用域,避免了使用 var
带来的问题,如变量提升和重复定义变量。在实际开发中,应该根据具体情况选择使用 const
或 let
,以便更好地保证代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657ad324d2f5e1655d54e94f