一起来学ES6—let变量

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fareise/article/details/69183145

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



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


展开阅读全文

没有更多推荐了,返回首页