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 相关文章推荐
扩展easyui.datagrid,添加数据loading遮罩效果代码
Nov 02 Javascript
jQuery选择器简明总结(含用法实例,一目了然)
Apr 25 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
Aug 23 Javascript
js 性能优化之快速响应的用户界面
Feb 15 Javascript
vue.js利用Object.defineProperty实现双向绑定
Mar 09 Javascript
非常实用的vue导航钩子
Mar 20 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
Nov 11 Javascript
从零开始搭建vue移动端项目到上线的步骤
Oct 15 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
Apr 28 Javascript
解决layui 表单元素radio不显示渲染的问题
Sep 04 Javascript
安装多版本Vue-CLI的实现方法
Mar 24 Javascript
ant-design-vue中tree增删改的操作方法
Nov 03 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
利用phpExcel实现Excel数据的导入导出(全步骤详细解析)
2013/11/26 PHP
php sybase_fetch_array使用方法
2014/04/15 PHP
php实现图片转换成ASCII码的方法
2015/04/03 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
php中序列化与反序列化详解
2017/02/13 PHP
javascript[js]获取url参数的代码
2007/10/17 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
2013/01/09 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
JavaScript碎片—函数闭包(模拟面向对象)
2019/03/13 Javascript
jQuery鼠标滑过横向时间轴样式(代码详解)
2019/11/01 jQuery
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
深入学习python的yield和generator
2016/03/10 Python
djano一对一、多对多、分页实例代码
2019/08/16 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
2020/06/02 Python
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
什么是java序列化,如何实现java序列化
2012/11/14 面试题
中间件的定义
2016/08/09 面试题
英语专业毕业生自荐信
2013/10/28 职场文书
优秀毕业大学生推荐信
2013/11/13 职场文书
小学开学典礼主持词
2014/03/19 职场文书
司法所长先进事迹
2014/06/02 职场文书
大学生入党自传2015
2015/06/26 职场文书
丧事主持词
2015/07/02 职场文书
孕妇病假条怎么写
2015/08/17 职场文书