ES6的let命令(二)
来源:互联网 发布:淘宝店交易平台 编辑:程序博客网 时间:2024/06/03 04:43
2.暂时性死区
暂时性死区是指只要块级作用域内存在let命令,它所声明的变量就绑定这个作用域,不会受到外部的影响。
var num=12;
if(true){
num=20;
let num;
}
运行之后,在num=20这一行会出现如下错误
从上述代码,显然可以看出,我们用var定义看一个全局变量,但是在if语句中,我们首先修改的变量num的值,然后在块级作用域内le又定义了名也为num的局部变量。导致后者绑定这个块级作用域此,所以在let声明变量前,对num赋值会报错。
ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称TDZ)。
在ES6规定暂死性区和不存在变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为。这样的错误在ES5是很常见的,现在有了这种规定,避免此类错误就很容易了。
0 0
- ES6的let命令(二)
- ES6的let和const命令(一)
- es6-1(let和const命令)
- 浅谈ES6 let命令
- js es6 let命令
- ES6中let命令
- 【ES6】let 命令
- 深入ES6 (二)let和const
- ES6(ECMAScript 6 ) let命令
- es6 let与constant命令
- es6 let 和 const 命令
- ES6之let命令妙用
- ES6 let和const命令
- ES6(let 、const)
- ES6学习笔记(一)--let和const命令
- ES6之let(理解闭包)和const命令
- ES6之let(理解闭包)和const命令
- ES6入门let与const命令(一)
- poj 1426 Find The Multiple
- 安装genymotion时VirtualBox Installation failed! Error :安装时发生严重错误
- C语言程序设计(4)
- vim操作笔记
- 【网易笔试】小朋友排列为一个队伍
- ES6的let命令(二)
- 用于Unity上的CSV文件读取工具,一句代码缓存、提取
- UDP与TCP区别
- Eclipse Tomcat 8 警告: Unable to add the resource at [***] to the cache...
- Caffe中的layer
- C语言程序设计(5)
- ios简单制作淘抢购活动 滑动效果
- 这是一个文档 我测试一下
- CSS3便利贴色号