ES6中let变量的特点,使用let声明总汇

摘要:ES6中let变量的特点:1.let声明变量存在块级作用域,2.let不能先使用再声明3.暂时性死区,在代码块内使用let命令声明变量之前,该变量都是不可用的,4.不允许重复声明

ES6中let变量的特点

1.在ES6之前是没有块级作用域的,let声明变量存在块级作用域,只在它所在的代码块有效
2.let不能先使用再声明
3.暂时性死区,在代码块内使用let命令声明变量之前,该变量都是不可用的
4.不允许重复声明,在相同作用域内,重复声明同一个变量。


1、存在块级作用域  

在不使用let要实现块级作用域,通常借助立即执行匿名函数来实现 :

(function(){
  var a= 1;
}());
console.log(a); //出错,not defined

如果使用Let,在{}就可以生效:

{
  let a = 1;
}
console.log(a); //出错 not defined


2、let不能先使用再声明

console.log(a); //出错,Uncaught ReferenceError: a is not defined
console.log(b);//undefined
let a = 1;
var b=1;

在这个语句块中,在变量声明之前引用这个变量会导致一个 ReferenceError的结果。所以let不能先使用在声明


3、暂时性死区 

在块级作用域内,若存在用let命令声明的变量,则所在区块对该变量形成封闭作用域,也就是该变量无视外部的同名变量。而又因为不存在变量提升,所以在该区块中,不能在声明前使用该变量。

var a  = 1;
if(true){
  a = 2; //出错 not defined
  let a; 
}

对比var

var a = 1;
if(true){
  a = 2; //var允许重复声明,而且变量提升,故a=2正常赋值
var a;
}


 4.不允许重复调用

相同作用域内重复声明同一个变量,也包括不能和var,const变量名重复

let a = 1;
let a = 1; //出错 let不可重复声明

var b = 1;
let b = 1; //出错 let不可重复声明

const c = 1;
let c = 1; //出错 let不可重复声明


 

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_288