JavaScript6 let 新语法优势介绍


Posted in Javascript onJuly 15, 2016

最近看国外的前端代码时,发现ES6的新特性已经相当普及,尤其是 let,应用非常普遍

虽然 let 的用法与 var 相同,但不管是语法语义上,还是性能上,都提升了很多,下面就从这两方面对比一下

语法>>

for ( var i=0; i<2; i++){
console.log( 'outer i: ' + i);
for ( var i=0; i<2; i++){
console.log( 'inner i: ' +i);
}
}

这是一个常见的嵌套循环,都定义了变量 i 来计数,执行结果如下:

outer i: 0
inner i: 0
inner i: 1

可以看到,外层循环被打断了,因为 i 的值被内层循环修改了,通常的解决方法是内层循环中使用其他的变量,但有可能一不小心就出错了

现在把 var 换成 let

for ( let i=0; i<2; i++){
console.log( 'outer i: ' + i);
for ( let i=0; i<2; i++){
console.log( 'inner i: ' +i);
}
}

输出结果为:

outer i: 0
inner i: 0
inner i: 1outer i: 1
inner i: 0
inner i: 1

很正常,内外层没有任何影响,因为 let 使变量的作用域只在自己所在块儿之内

示例2

console.log(a);
var a = 'hi' ;

输出结果为 undefined,执行 log(a) 是在声明变量之前,为什么没有报错?因为这两行代码实际的效果是:

var a;console.log(a);
a = 'hi';

在解析JS代码时,会把变量的声明提示到开始位置,这个方式也比较让人迷惑

改用 let 后,就没有这个问题了,会直接报错

console.log(a); // Uncaught ReferenceError: a is not definedlet 
a = 'hi' ;

性能做一个简单的测试

var start = + new Date();
for ( var i = 0;i<1000000;i++){
var num = 123;
var str = 'abc' ;
var obj = {key: 'value' };
var arr = [ 'bill' , 'dell' ];
}
var end = + new Date();
console.log(end - start);

在Firefox下的执行结果平均为 53ms

改为 let

'use strict'
var start = + new Date();
for ( var i = 0;i<1000000;i++){
let num = 123;
let str = 'abc' ;
let obj = {key: 'value' };
let arr = [ 'bill' , 'dell' ];
}
var end = + new Date();
console.log(end - start);

结果平均为 5ms ,提速很明显

以上所述是小编给大家介绍的JavaScript6 let 新语法优势,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript编程起步(第四课)
Jan 10 Javascript
HTML页面如何象ASP一样接受参数
Feb 07 Javascript
Javascript Object.extend
May 18 Javascript
DOM Scripting中的图片切换[兼容Firefox]
Jun 12 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
Mar 04 Javascript
纯javaScript、jQuery实现个性化图片轮播【推荐】
Jan 08 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
Apr 24 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
Jul 27 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
Oct 14 jQuery
vue.js做一个简单的编辑菜谱功能
May 08 Javascript
解决angularjs WdatePicker ng-model的问题
Sep 13 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
Apr 30 Javascript
简单实现轮播图效果的实例
Jul 15 #Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
Jul 15 #Javascript
JavaScript计算器网页版实现代码分享
Jul 15 #Javascript
js实现楼层效果的简单实例
Jul 15 #Javascript
基于JavaScript实现轮播图代码
Jul 14 #Javascript
js轮播图代码分享
Jul 14 #Javascript
jQuery中deferred对象使用方法详解
Jul 14 #Javascript
You might like
php读取30天之内的根据算法排序的代码
2008/04/06 PHP
php cURL和Rolling cURL并发方式比较
2013/10/30 PHP
php解析http获取的json字符串变量总是空白null
2015/03/02 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
js跑步算法的实现代码
2013/12/04 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
2015/08/10 Javascript
js实现仿京东2级菜单效果(带延时功能)
2015/08/27 Javascript
javascript瀑布流式图片懒加载实例
2020/06/28 Javascript
Bootstrap 组件之按钮(二)
2016/05/11 Javascript
ES6入门教程之Array.from()方法
2019/03/23 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
JavaScript相等运算符的九条规则示例详解
2019/10/20 Javascript
vue实现导航菜单和编辑文本的示例代码
2020/07/04 Javascript
[01:25]DOTA2自定义游戏灵园鬼域等你踏足
2015/10/30 DOTA
python写的一个squid访问日志分析的小程序
2014/09/17 Python
跟老齐学Python之类的细节
2014/10/13 Python
Python的Flask框架中实现分页功能的教程
2015/04/20 Python
一步步解析Python斗牛游戏的概率
2016/02/12 Python
Python有序字典简单实现方法示例
2017/09/28 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
python采集微信公众号文章
2018/12/20 Python
在django中自定义字段Field详解
2019/12/03 Python
Django前后端分离csrf token获取方式
2020/12/25 Python
纯CSS3实现圆角效果(含IE兼容解决方法)
2014/05/07 HTML / CSS
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
Armor Lux法国官方网站:水手服装、成衣和内衣
2020/05/26 全球购物
小学家长评语大全
2014/04/16 职场文书
四风问题查摆材料
2014/08/25 职场文书
婚前保证书范文
2015/02/28 职场文书
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python