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 相关文章推荐
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
Jun 14 Javascript
让IE8浏览器支持function.bind()方法
Oct 16 Javascript
使用 TypeScript 重新编写的 JavaScript 坦克大战游戏代码
Apr 07 Javascript
JavaScript中获取时间的函数集
Aug 16 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
angular ngClick阻止冒泡使用默认行为的方法
Nov 03 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
Nov 24 Javascript
Bootstrap实现提示框和弹出框效果
Jan 11 Javascript
jQuery实现优雅的弹窗效果(6)
Feb 08 Javascript
angular或者js怎么确定选中ul中的哪几个li
Aug 16 Javascript
详解在vue-test-utils中mock全局对象
Nov 07 Javascript
layui数据表格实现重载数据表格功能(搜索功能)
Jul 27 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运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
php 删除cookie方法详解
2014/12/01 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
文本框输入时 实现自动提示(像百度、google一样)
2012/04/05 Javascript
.net,js捕捉文本框回车键事件的小例子(兼容多浏览器)
2013/03/11 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
DOM操作原生js 的bug,使用jQuery 可以消除的解决方法
2016/09/04 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
微信小程序实现自动定位功能
2018/10/31 Javascript
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
微信小程序上传文件到阿里OSS教程
2019/05/20 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
如何基于jQuery实现五角星评分
2020/09/02 jQuery
react中hook介绍以及使用教程
2020/12/11 Javascript
零基础写python爬虫之神器正则表达式
2014/11/06 Python
python常用知识梳理(必看篇)
2017/03/23 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
Python中三维坐标空间绘制的实现
2020/09/22 Python
详解HTML5 window.postMessage与跨域
2017/05/11 HTML / CSS
Python里面search()和match()的区别
2016/09/21 面试题
学校七一活动方案
2014/01/19 职场文书
高三生物教学反思
2014/01/25 职场文书
开办大学饮食联盟创业计划书
2014/01/29 职场文书
关于爱国的演讲稿
2014/05/07 职场文书
教师求职自荐书
2014/06/14 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
上下班时间调整通知
2015/04/23 职场文书
企业计划生育责任书
2015/05/09 职场文书
白银帝国观后感
2015/06/17 职场文书
Java实现给Word文件添加文字水印
2022/02/15 Java/Android