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 相关文章推荐
IE与FireFox的兼容性问题分析
Apr 22 Javascript
firefox事件处理之自动查找event的函数(用于onclick=foo())
Aug 05 Javascript
Javascript中的String对象详谈
Mar 03 Javascript
JS实现浏览器状态栏显示时间的方法
Oct 27 Javascript
js事件处理程序跨浏览器解决方案
Mar 27 Javascript
Javascript实现鼠标框选操作  不是点击选取
Apr 14 Javascript
javascript实现仿百度图片的瀑布流加载效果
Apr 20 Javascript
网站发布后Bootstrap框架引用woff字体无法正常显示的解决方法
Nov 24 Javascript
基于jQuery实现的打字机效果
Jan 16 Javascript
jQuery简单获取DIV和A标签元素位置的方法
Feb 07 Javascript
详解JS中的this、apply、call、bind(经典面试题)
Sep 19 Javascript
基于javascript canvas实现五子棋游戏
Jul 08 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
从Web查询数据库之PHP与MySQL篇
2009/09/25 PHP
PHP中的事务使用实例
2015/05/26 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
Gird事件机制初级读本
2007/03/10 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
jQuery基础_入门必看知识点
2016/07/04 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
python中scikit-learn机器代码实例
2018/08/05 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
python实现简单图片物体标注工具
2019/03/18 Python
使用python实现离散时间傅里叶变换的方法
2019/09/02 Python
python中class的定义及使用教程
2019/09/18 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
html5绘制时钟动画
2014/12/15 HTML / CSS
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
大学生志愿者感言
2014/01/15 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
学校出纳员岗位职责
2014/03/18 职场文书
产品质量承诺书
2014/03/27 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
主题班会开场白
2015/06/01 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL