一起来学ES6—let变量

我的个人微信公众号“精粹微阅读”(微信号"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);-------->3console.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声明变量的主要知识点。


                                什么都懂一点,生活才多彩些。一起读书学知识吧~

一起来学ES6—let变量_第1张图片

你可能感兴趣的:(一起来学ES6—let变量)