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中call和apply方法浅谈
Sep 27 Javascript
浅析tr的隐藏和显示问题
Mar 05 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
JavaScript操作Oracle数据库示例
Mar 06 Javascript
JS控制按钮10秒钟后可用的方法
Dec 22 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
第一次记录Bootstrap table学习笔记(1)
May 18 Javascript
Angular2的管道Pipe的使用方法
Nov 07 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
Nov 09 Javascript
微信小程序基于movable-view实现滑动删除效果
Jan 08 Javascript
JavaScript实现PC端四格密码输入框功能
Feb 19 Javascript
一篇文章看懂JavaScript中的回调
Jan 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
如何将数据从文本导入到mysql
2006/10/09 PHP
PHPMailer邮件类利用smtp.163.com发送邮件方法
2008/09/11 PHP
PHP三层结构(上) 简单三层结构
2010/07/04 PHP
php 获取全局变量的代码
2011/04/21 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
PHP的数组中提高元素查找与元素去重的效率的技巧解析
2016/03/03 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
PHP count_chars()函数讲解
2019/02/14 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
js静态方法与实例方法分析
2011/07/04 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
JavaScript数组迭代器实例分析
2015/06/09 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
element 结合vue 在表单验证时有值却提示错误的解决办法
2018/01/22 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
详解Python中for循环的使用方法
2015/05/14 Python
python 字典操作提取key,value的方法
2019/06/26 Python
django使用admin站点上传图片的实例
2019/07/28 Python
Python实现点云投影到平面显示
2020/01/18 Python
关于tf.reverse_sequence()简述
2020/01/20 Python
聊聊python中的循环遍历
2020/09/07 Python
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
如何高效率的查找一个月以内的数据
2012/04/15 面试题
活动总结书
2014/05/08 职场文书
旅游活动总结
2014/08/27 职场文书
教师节倡议书
2014/08/30 职场文书
财务工作失职检讨书
2014/11/21 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
停课通知书
2015/04/24 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
SpringCloud Function SpEL注入漏洞分析及环境搭建
2022/04/08 Java/Android