JS中let与const命令使用
本篇文章主要讲述JS中let与const命令使用,通过代码展示给各位。在ES6中,let命令是新增的声明变量,与var的差异在于let无法重复声明,且let有效只是在其命令的代码块内。let禁止变量出现变量提升现象,let的特点就是通过暂时性死区的方式来避免程序上的错误。

let命令
基本使用:使用{}包括起来的内容为代码块。声明变量是分配一个存储空间,let声明过后的变量无法再次声明。
{
let a = 10;
var a = 1; // 'a' has already been declared
}
{
var a = 10;
var a = 1;
}
console.log(a); // 1
不同代码块可被重复声明。我们知道let的不可重复声明是作用在同一代码块中的,在后续中我们会具体解释相关的概念即块级作用域。
{
let a = 1;
console.log(a);
}
{
let a = 2;
console.log(a);
}
有效区间的不同:上述中,我们知道let只在其命令的代码块内有效,而var声明的变量可全局有效。现在举例为大家说明。
{
let a = 10;
var b = 1;
}
console.log(a); // a is not defined
console.log(b); // 1
变量提升:在声明前调用为undefined,之前使用var声明变量undefined就是我们熟悉的声明但未赋值,这种现象叫做变量提升,而let禁止执行,因此,要想使用let所声明的变量,就要安排在声明后使用。
console.log(bar); // Cannot access 'bar' before initialization
let bar = 2
变量提升的编译:现在看看变量提升现象在编译后的情况,更有利于了解变量提升现象出现的原因。所有的声明变量语句在编译后都会将声明语句提到程序的最先级,所以才会出现声明但未赋值的现象。
// 编译前
console.log(a);
var a = '猪痞恶霸';
// 编译后
var a;
console.log(a);
a = '猪痞恶霸';
暂时性死区:在代码块中使用let声明变量前,该变量不可用,这种现象称为暂时性死区,其实这点和变量提升有些相似,我理解为:let禁止变量提升现象的原因是在声明变量前的代码区域为暂时性死区。
{
// 暂时性死区
tmp = 'abc';
console.log(tmp);
// 暂时性死区
let tmp; // 声明tmp,结束暂时性死区
console.log(tmp); // undefined 声明未赋值
tmp = '123
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7397.html
