简介
ES6 (ECMAScript 2015) 引入了两个新的变量声明方式:let 和 const。let 和 const 除了具有作用域链上下文、闭包等基本概念外,还引入了块级作用域的概念。与 var 相比,let 和 const 更加安全、稳定、语义化。在实际使用时,需要了解他们的各自特点并根据具体情况选择使用。
let
let 关键字用于声明一个块级作用域的变量。在严格模式下,即使没有声明,也不允许隐式地创建全局变量。let 声明的变量无法在相同作用域内重新声明,也隔离了不同作用域内同名变量的值。
-------- --------- - --- - - -- - --- - - -- -- --------------------- --------------- -- -- - - --------------- -- -- - -
let 关键字还可以与 for 循环搭配使用,创建一个块级作用域,每次循环都有一个新的变量实例。
--- ---- - - -- - - -- ---- - --------------------- - --------------- -- ---- - --- -
以上代码输出的是 0 1 2,如果使用 var 关键字,输出的将会是 3 3 3。
const
const 关键字用于声明一个块级作用域的常量。常量的值在声明后不可被更改。与 let 类似,常量也有块级作用域的概念,无法重复声明与隔离不同作用域内同名变量。
----- -- - ----- -- - -- -- ---------- ---------- -- -------- ---------
与 let 类似,const 关键字也可以声明一个数组或对象型的常量。但是需要注意的是,这些变量本身所指向的内存地址不能改变,但是对象内部的值可以被改变。
----- --- - --- -- --- ------------ -- ---- --- - --- -- --- -- ---------- ---------- -- -------- ---------
与 var 的区别
var 关键字在全局作用域内声明的变量,实际上是创建了全局变量的一个属性。而 let 和 const 声明的变量,则不会为全局对象创建属性。
--- - - -- ---------------------- -- -- - --- - - -- ---------------------- -- -- ---------
var 声明的变量是有提升效果的,可能会导致意料之外的 bug,而 let 和 const 声明的变量是没有提升效果的。
--------------- -- -- --------- --- - - --
--------------- -- --------------- - -- --- ------- --- - - --
在一般情况下,应优先使用 let 和 const 关键字来声明变量,以获取更好的代码质量与稳定性。
总结
let 和 const 关键字是 ES6 中引入的两个新的变量声明方式。let 和 const 声明变量的作用域是块级作用域,遵循作用域链的概念,不会污染全局作用域。let 和 const 声明的变量无法被重复声明,也不会存在变量提升的现象。与 var 相比,let 和 const 更加语义化、稳定、安全,应该是首选的变量声明方式。在实际使用时,需要根据具体情况选择使用。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64669c9c968c7c53b071ca18