我的个人微信公众号“精粹微阅读”(微信号"jcwyd2016")[不是订阅号,就是一个读书交流的小平台],没时间读书的可以来看一下,自己写的一些读书知识点总结,希望能对大家有所帮助~涉及经济政治法律理财设计各种方面的书籍
let变量是ES6中新增的声明变量的方式,它主要包括以下要点
1.仅在当前块级作用域内有效
2.不存在变量提升
3.不允许重复声明
一、仅在当前块级作用域内有效
var声明的变量在任何位置都可以访问到,而let声明变量的一大特点就是只有在当前作用域内才能访问。下面是一个例子:
{
var a = 1;
let b = 2;
{
var c = 3;
console.log(b); -------->1
}
console.log(c); -------->2
}
console.log(a); -------->3
console.log(b); -------->4
上面的例子中,1能够正常调用变量b,而2会报错。这说明上层的作用域不能访问内层let方法定义的变量,而内层可以访问外层let定义的变量。3可以正常运行,因为var声明的变量在哪里都可以访问的到。相比之下4就会报错,因为在外层作用域内并不存在变量b,变量b仅在块级作用域中使用let方法声明过。
二、不存在变量提升
var声明的变量,不论声明在任何位置,都能被访问到,这就是var的变量提升。而let声明的变量,只能在声明后调用,否则会报错。
console.log(a); -------->1
console.log(b); -------->2
var a = 10;
let b = 20;
{
console.log(a); -------->3
let a = 30;
}
上面的代码中,1正常调用,因为变量a是var声明的,存在变量提升。而2会报错,因为b是let声明的,在声明之前对其进行调用,会出现变量b还未定义的错误。
在一个块级作用域内,let声明的变量优先。因此在3中,即便外部已经声明了变量a,但是由于内部又用let声明了变量a,因此外部var声明的变量a在这个作用域内无效。在这个作用域中,又存在let变量的调用在声明之前,因此产生喝2相同的错误。
三、不允许重复声明
var声明的变量,如果重复声明同一个变量,后面声明的变量值会覆盖前面声明的变量值。但是。let声明的变量不允许被重复声明,否则会报错。
var a = 10;
let b = 20;
let a = 30; ------>3
let b = 40; ------>4
上面的代码中,3和4会报相同的错误。因为3和4使用let声明变量,并且在声明let变量之前,相同的变量名都已经被var或者let声明过了,因此会出现重复声明变量的错误。
以上就是ES6中let声明变量的主要知识点。
什么都懂一点,生活才多彩些。一起读书学知识吧~