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 相关文章推荐
js中根据字数截取字符串,不能截断url
Jan 12 Javascript
时间戳转换为时间 年月日时间的JS函数
Aug 19 Javascript
无刷新预览所选择的图片示例代码
Apr 02 Javascript
JavaScript编程的10个实用小技巧
Apr 18 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
AngularJS实践之使用NgModelController进行数据绑定
Oct 08 Javascript
AJAX和jQuery动态加载数据的实现方法
Dec 05 Javascript
微信小程序 视图容器组件的详解及实例代码
Jan 19 Javascript
Javascript操作dom对象之select全面解析
Apr 24 Javascript
基于vue.js组件实现分页效果
Dec 29 Javascript
请求时token过期自动刷新token操作
Sep 11 Javascript
threejs太阳光与阴影效果实例代码
Apr 05 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
php5 pdo新改动加载注意事项
2008/09/11 PHP
比较时间段一与时间段二是否有交集的php函数
2011/05/31 PHP
PHP程序员必须清楚的问题汇总
2014/12/18 PHP
PHP程序员的技术成长规划
2016/03/25 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
YII2框架中excel表格导出的方法详解
2017/07/21 PHP
PHP 获取客户端 IP 地址的方法实例代码
2018/11/11 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
2019/08/03 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
修改好的jquery滚动字幕效果实现代码
2011/06/22 Javascript
CSS(js)限制页面显示的文本字符长度
2012/12/27 Javascript
jquery中post方法用法实例
2014/10/21 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
javascript数据结构之二叉搜索树实现方法
2015/11/25 Javascript
jQuery实现圣诞节礼物传送(花式轮播)
2016/12/25 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
node.JS二进制操作模块buffer对象使用方法详解
2020/02/06 Javascript
JavaScript实现动态生成表格
2020/08/02 Javascript
vue实现图书管理系统
2020/12/29 Vue.js
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
python实现解数独程序代码
2017/04/12 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
python中线程和进程有何区别
2020/06/17 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
物业管理大学生个人的自我评价
2013/10/10 职场文书
会计与审计毕业生自荐信范文
2013/12/30 职场文书
六年级数学教学反思
2014/02/03 职场文书
高中运动会入场词
2014/02/14 职场文书
干部四风问题整改措施思想汇报
2014/10/13 职场文书
一篇合格的广告文案,其主要目的是什么?
2019/07/12 职场文书