在 JavaScript ES6 中,有两个新增的变量声明关键字 let 和 const。相对于以往只有 var 这一个关键字,let 和 const 更为灵活,可以更好地控制变量的作用域和可变性。这篇文章将会详细介绍 let 和 const 的用法。
let 关键字
基本语法
使用 let 关键字声明变量时,语法与 var 很相似,只需将 var 换成 let:
let a = 1;
块级作用域
let 声明的变量只在其声明的块级作用域内有效。块级作用域由一对大括号括起来,比如 if 语句、while 语句、for 语句、函数等都是块级作用域。
if (true) { let x = 1; } console.log(x); // ReferenceError: x is not defined
暂时性死区
在 let 声明的变量之前访问它时,会导致 ReferenceError(引用错误)。这种限制只存在于当前作用域内部。
if (true) { console.log(a); // ReferenceError: a is not defined let a = 1; }
可变性
与 var 不同,使用 let 声明的变量可以进行重新赋值,但不允许重复声明。
let a = 1; a = 2; console.log(a); // 2 let a = 1; // SyntaxError: Identifier 'a' has already been declared
const 关键字
基本语法
使用 const 关键字声明变量时,后续不允许重新赋值。
const a = 1; a = 2; // TypeError: Assignment to constant variable
块级作用域
与 let 关键字相同,const 声明的变量也只在其声明的块级作用域内有效。
if (true) { const x = 1; } console.log(x); // ReferenceError: x is not defined
对象的 const 声明
使用 const 声明一个对象时,对象的属性依然是可变的。只有当对对象本身进行赋值时,才会导致 TypeError(类型错误)。
const obj = { a: 1 }; obj.a = 2; // 可行 obj.b = 2; // 可行 obj = {}; // 类型错误
总结
通过本文的介绍,我们了解了 let 和 const 关键字的语法和用法。其中,let 声明的变量可以重新赋值,但不允许重复声明,而 const 声明的变量不允许重新赋值。另外,使用这两个关键字声明的变量都只在其声明的块级作用域内有效。这些特性可以提高我们代码的可读性和健壮性,可以更好地进行变量管理。
示例代码
-- -------------------- ---- ------- -- -- --- ---- -- ------ - --- - - -- --------------- -- - - --------------- -- --------------- - -- --- ------- -- -- ----- ---- ----- -- - ----- -- - -- -- ---------- ---------- -- -------- --------- -- --- ----- -- ----- --- - - -- - -- ----- - -- -- -- ----- - -- -- -- --- - --- -- ----
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a2b17448841e9894f29352