返回
ES6中变量声明的新面孔:let 与 const
前端
2023-10-09 15:07:12
let 与 const 的语法与作用域
在ES6中,使用let
和const
来声明变量。let
声明的变量具有块级作用域,而const
声明的变量则具有常量性。
let
let
声明的变量只在声明它的块级作用域内有效。也就是说,如果在一个块级作用域内声明了一个let
变量,那么在这个块级作用域之外就无法访问该变量。块级作用域可以是函数、循环体、if-else
语句体等。
例如:
function foo() {
let x = 10;
{
let y = 20;
console.log(x + y); // 30
}
console.log(x); // 10
console.log(y); // ReferenceError: y is not defined
}
foo();
在上面的代码中,let x = 10
声明的变量x
在整个foo()
函数内有效,而let y = 20
声明的变量y
只在foo()
函数内的第一个块级作用域内有效。因此,在函数的最后一行代码中,无法访问变量y
。
const
const
声明的变量是常量,这意味着它的值在声明后不能被改变。const
变量的声明必须同时初始化,也就是说,必须在声明时为其赋值。
例如:
const PI = 3.1415926;
PI = 3.14; // TypeError: Assignment to constant variable.
在上面的代码中,const PI = 3.1415926
声明了一个常量PI
,并为其赋值3.1415926
。随后,试图将PI
的值修改为3.14
时,会抛出一个TypeError
异常。
let 与 const 与 var 的异同
let
和const
与传统的var
变量声明方式相比,具有以下几个异同:
相同点
let
、const
和var
都可以用来声明变量。let
、const
和var
声明的变量都可以使用=
运算符赋值。
不同点
let
和const
声明的变量具有块级作用域,而var
声明的变量具有函数级作用域。const
声明的变量是常量,其值在声明后不能被改变,而let
和var
声明的变量的值可以被改变。const
变量必须在声明时初始化,而let
和var
变量可以不初始化。
let 与 const 的使用建议
在ES6中,推荐使用let
和const
来声明变量,而不是var
。let
和const
可以帮助您编写出更清晰、更易维护的代码。
- 使用
let
声明块级作用域内的变量。 - 使用
const
声明常量。 - 避免使用
var
来声明变量。