ES6-let关键字
let用来声明变量,类似于var
1. let变量必须先声明后使用(没有变量提升,没有预先解析)
var a = 10;
let b = 20;
console.log(a);
console.log(b);
打开浏览器审查看一下正常的效果吧!
以下是错误示范
使用var变量后声明时显示的是undefined
console.log(c);//undefined
var c = 9;
使用let变量后声明时会报错
console.log(d);
let d = 9;
2. let不允许在同一作用域下重复声明变量,否则会报错
首先我们来看看var重复声明会怎么样
var e = 100;
var e = 101;
console.log(e);
可以看见,使用var声明,控制台只会打印后面的101,说明会覆盖掉前面声明的变量,它不会给你报错,这也正是它的弊端
再来看看使用let重复声明变量
let f = 100;
let f = 101;
console.log(f);
3. let声明的变量拥有块级作用域(提一嘴:var是全局和函数作用域)
使用原来的var定义,并在外面打印结果
if (true) {
var numA = 100;
}
console.log(numA);
使用let来看看,会怎么样
if (true) {
let numB = 200;
}
console.log(numB);
结果显示 numB is not defined,这样会报错,函数外面是没有定义numB的,调用处已经不在它的作用域内了。
我们再来举一个例子
for (var i = 0; i < 10; i++) {
}
console.log(i); //10
for (let j = 0; j < 10; j++) {
}
console.log(j); //报错
这里我们引入一个概念“暂时性死区”,啥意思呢?在代码块内,使用let声明变量之前,该变量都是不可用的,声明变量之前可以理解成暂时性死区
let numC = 66;
if (true) {
console.log(numC); //报错,必须先声明后使用,这个区域暂时性死区
let numC = 77;
}
喜欢我的话,多多为我点赞吧!你的支持和鼓励是我前进的最大动力,有疑问欢迎评论区留言。