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 keycode总结
Feb 04 Javascript
Js实现简单的小球运动特效
Feb 18 Javascript
微信小程序商品到详情的实现
Jun 27 Javascript
基于zepto.js实现手机相册功能
Jul 11 Javascript
js Dom实现换肤效果
Oct 21 Javascript
使用Vuex实现一个笔记应用的方法
Mar 13 Javascript
MVVM框架下实现分页功能示例
Jun 14 Javascript
详解如何在vue项目中使用lodop打印插件
Sep 27 Javascript
vue-cli3.0如何使用CDN区分开发、生产、预发布环境
Nov 22 Javascript
详解vue父子组件关于模态框状态的绑定方案
Jun 05 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
Jul 23 Javascript
JavaScript DOM常用操作代码汇总
Jul 03 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面向对象编程快速入门
2006/10/09 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
Yii实现复选框批量操作实例代码
2017/03/15 PHP
基于javascript滚动图片具体实现
2013/11/18 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
ionic实现底部分享功能
2017/05/11 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析
2019/03/11 Javascript
微信小程序渲染性能调优小结
2019/07/30 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
[58:09]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第三场 6.2
2018/06/03 DOTA
python自动化测试之连接几组测试包实例
2014/09/28 Python
利用Python实现颜色色值转换的小工具
2016/10/27 Python
Django 导出 Excel 代码的实例详解
2017/08/11 Python
python实现对文件中图片生成带标签的txt文件方法
2018/04/27 Python
Python实现的简单计算器功能详解
2018/08/25 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
零基础小白多久能学会python
2020/06/22 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
2020/10/12 Python
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
酷瑞网络科技面试题
2012/03/30 面试题
领导检查欢迎词
2014/01/14 职场文书
留学推荐信中文范文三篇
2014/01/25 职场文书
保险专业大学生职业规划书
2014/03/03 职场文书
金融系应届毕业生求职信
2014/05/26 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
庆国庆国旗下讲话稿2014
2014/09/21 职场文书
机关党员四风问题个人整改措施
2014/10/26 职场文书
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL
SQL Server使用导出向导功能
2022/04/08 SQL Server