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 判断 object 的特定类转载
Feb 01 Javascript
javascript indexOf函数使用说明
Jul 03 Javascript
JavaScript中SQL语句的应用实现
May 04 Javascript
Extjs Gird 支持中文拼音排序实现代码
Apr 15 Javascript
js实现获取div坐标的方法
Nov 16 Javascript
Angular.js实现注册系统的实例详解
Dec 18 Javascript
vue中appear的用法
Aug 17 Javascript
基于vue v-for 多层循环嵌套获取行数的方法
Sep 26 Javascript
Vue之Mixins(混入)的使用方法
Sep 24 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
Mar 08 Javascript
JavaScript实现移动端带transition动画的轮播效果
Mar 24 Javascript
Paypal支付不完全指北
Jun 04 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 中文处理技巧
2010/04/25 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
基于PHP选项与信息函数的使用详解
2013/05/10 PHP
php检测用户是否用手机(Mobile)访问网站的类
2014/01/09 PHP
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
C#静态方法与非静态方法实例分析
2014/09/22 PHP
PHP实现的微信APP支付功能示例【基于TP5框架】
2019/09/16 PHP
学习ExtJS TextField常用方法
2009/10/07 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
两个JavaScript jsFiddle JSBin在线调试器
2010/03/14 Javascript
Javascript下判断是否为闰年的Datetime包
2010/10/26 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
JavaScript中的变量定义与储存介绍
2014/12/31 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
2017/02/27 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
Angular4 ElementRef的应用
2018/02/26 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
2018/12/20 Python
浅谈Python type的使用
2019/11/19 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
中国梦的演讲稿
2014/01/08 职场文书
学生安全责任书范本
2014/07/24 职场文书
医生学习党的群众路线教育实践活动心得体会
2014/11/03 职场文书
学校学习型党组织建设心得体会
2019/06/21 职场文书
Linux安装Nginx步骤详解
2021/03/31 Servers
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python