ES6使用let命令更简单的实现块级作用域实例分析


Posted in Javascript onMarch 31, 2017

本文实例讲述了ES6使用let命令更简单的实现块级作用域。分享给大家供大家参考,具体如下:

let 带来了更简单的块级作用域

1. ES6新增了let命令,用于声明变量。其与var的不同在于,用let声明的变量只在 { } 内有效。这使得我们可以很方便的实现块级作用域,不再使用立即实行函数。

{
 let a=1;
 var b=2;
}
console.log(a); //undefined
console.log(b); //2

在for循环中使用let可以有效避免全局变量污染。

2. let不会变量提升。也就是说,如果你使用var ,可以先使用变量再定义变量(注意:变量提升只提升声明不提升赋值操作),但是如果你使用let定义变量则必须先定义后使用,否则会报错。

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

3. 暂时性死区(Temporal Dead Zone)

只要块级作用域内有let,let 声明的变量不受全局同名变量的影响,如果想要在块级作用域内使用let 声明的变量,只能为其赋值。

var a=1;
if(true){
 a=2;
 let a; //Uncaught ReferenceError: a is not defined
}

4. 不允许在一个块级作用域内重复声明一个变量

不管是var与let重复声明,还是let与let重复声明,都会报错。

希望本文所述对大家ECMAScript程序设计有所帮助。

Javascript 相关文章推荐
window.showModalDialog使用手册
Jan 11 Javascript
JavaScript asp.net 获取当前超链接中的文本
Apr 14 Javascript
模拟一个类似百度google的模糊搜索下拉列表
Apr 15 Javascript
jQuery实现ichat在线客服插件
Dec 29 Javascript
jquery实现页面加载效果
Feb 21 Javascript
Bootstrap缩略图的创建方法
Mar 22 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
May 22 Javascript
vue中引用阿里字体图标的方法
Feb 10 Javascript
node中的密码安全(加密)
Sep 17 Javascript
详解Vue中CSS样式穿透问题
Sep 12 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
Sep 12 Javascript
vue双向绑定数据限制长度的方法
Nov 04 Javascript
JS解决移动web开发手机输入框弹出的问题
Mar 31 #Javascript
详解使用JS如何制作简单的ASCII图与单极图
Mar 31 #Javascript
Angularjs中使用指令绑定点击事件的方法
Mar 30 #Javascript
Angualrjs和bootstrap相结合实现数据表格table
Mar 30 #Javascript
微信小程序中顶部导航栏的实现代码
Mar 30 #Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
Mar 30 #Javascript
vue分类筛选filter方法简单实例
Mar 30 #Javascript
You might like
PHP简介
2006/10/09 PHP
php+xml编程之xpath的应用实例
2015/01/24 PHP
php多重接口的实现方法
2015/06/20 PHP
thinkphp整合微信支付代码分享
2016/11/24 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
jquery中实现标签切换效果的代码
2011/03/01 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
jquery 中toggle的2种用法详解(推荐)
2016/09/02 Javascript
浅谈js键盘事件全面控制
2016/12/01 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
vue中node_modules中第三方模块的修改使用详解
2019/05/31 Javascript
微信小程序框架的页面布局代码
2019/08/17 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
Python CVXOPT模块安装及使用解析
2019/08/01 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
html5+css3之动画在webapp中的应用
2014/11/21 HTML / CSS
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
销售自荐信
2013/10/22 职场文书
监理员的岗位职责
2013/11/13 职场文书
国贸专业的职业规划范文
2014/01/23 职场文书
英语生日邀请函
2014/01/23 职场文书
2014全国两会大学生学习心得体会
2014/03/10 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
法制教育主题班会
2015/08/13 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android