在 ES6 之前,我们用 var
关键字来声明变量,然而 var
存在一些问题,比如有变量提升的问题,以及在函数作用域中定义的变量外部也能访问的问题。
为了解决这些问题,ES6 引入了 let
和 const
来声明变量。
let
let
关键字用来声明块级作用域的变量。块级作用域指的是花括号 {}
中的代码区域。
与 var
不同的是,let
声明的变量不存在变量提升的问题,变量只能在声明后访问。
if (true) { let a = 10; var b = 20; } console.log(a); // Uncaught ReferenceError: a is not defined console.log(b); // 20
此外,let
声明的变量在块级作用域外不可访问。这意味着,在循环中使用 let
声明变量时,每次循环都会创建一个新的变量。
for (let i = 0; i < 3; i++) { console.log(i); } console.log(i); // Uncaught ReferenceError: i is not defined
const
const
关键字用来声明常量,常量是指一旦声明就不能再改变的值。
与 let
一样,const
声明的变量也有块级作用域的特点。
const PI = 3.1415926; PI = 3; // Uncaught TypeError: Assignment to constant variable.
当试图修改一个用 const
声明的变量时,会抛出异常。
需要注意的是,用 const
声明的对象和数组仍然可以修改其属性或元素的值,但不能重新赋值。
-- -------------------- ---- ------- ----- ------- - - ----- ------ ---- -- -- ----------- - --- --------------------- -- - ----- ------ ---- -- - ----- ------ - ------- -------- -------- ---------------------- -------------------- -- - ------ -------- ------- -------- - ------ - ----------- -- -------- ---------- ---------- -- -------- ---------
总结
let
和 const
均用来声明块级作用域的变量,可有效避免变量提升问题,并且增加了代码的可读性和可维护性。
在使用时,应尽量使用 const
声明不变的值,例如常量、配置等,而使用 let
声明可变的值,例如循环变量、函数内部变量等。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648f2dda48841e9894d82258