在ES6中新增了两种新的声明方式就是let和const ,所以今天我们就来了解一下它们。
一.let
let声明有以下几个特点:
1.不能进行重复声明
let a = 4;
var a = 4;
console.log(a);
这时会报语法错误,因为let不能重复声明同一个变量名
2.不存在变量提升
//我们都知道var声明的变量是会被提前的
console.log(a);
var a = 4;
console.log(b);
let b = 3
这时a输出undefined,b输出时会报错
3.块级作用域
{
let a = 1;
}
console.log(a)
//这时会报错 a未被定义
{
var a = 1
}
console.log(a)
//输出1
所以经过let声明的变量不会被提升
4.暂时性死区
//只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。
var t = 1;
if (true) {
console.log(t); // ReferenceError
let t;
}
上面代码中,存在全局变量t,但是块级作用域内let又声明了一个局部变量t,导致后者绑定这个块级作用域,所以在let声明变量前,对t进行打印会报错。
二.const
const声明有以下几个特点:
1.声明必须赋值
const a;
a = 4;
//报语法错误
2.const声明的是一个常量,不能进行修改
const a = 4;
a = 5;
//VM63:2 Uncaught TypeError: Assignment to constant variable.
3.const声明也存在暂时性死区,这里和let相似,我就不多做介绍。
4.我们知道了const定义的是一个常量,是不能进行修改的,但是不能修改是有限制的,这里不能修改指的是内存地址,引用数据类型还是可以修改的
const x = [0,1];
x.push(3);
console.log(x);
//控制台输出[0,1,3]
从上面例子和特点3中我们可以看出const定义不能修改的是内存地址的指向,对于其他的引用数据类型,可以被修改。
本文介绍了ES6中新增的两种变量声明方式let和const的特点和使用方法,包括它们的块级作用域、变量提升、暂时性死区等特性。
382

被折叠的 条评论
为什么被折叠?



