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 相关文章推荐
jquery indexOf使用方法
Aug 19 Javascript
Javascript中Event属性搜集整理
Sep 17 Javascript
jQuery+css3动画属性制作猎豹浏览器宽屏banner焦点图
Mar 16 Javascript
给angular加上动画效遇到的问题总结
Feb 17 Javascript
jQuery qrcode生成二维码的方法
Apr 03 Javascript
AngularJS下对数组的对比分析
Aug 24 Javascript
js实现表单提交后不重新刷新当前页面
Nov 30 Javascript
webuploader模态框ueditor显示问题解决方法
Dec 27 Javascript
JavaScript编写一个贪吃蛇游戏
Mar 09 Javascript
基于vue开发的在线付费课程应用过程
Jan 25 Javascript
js实现控制文件拖拽并获取拖拽内容功能
Feb 17 Javascript
JS实现的哈夫曼编码示例【原始版与修改版】
Apr 22 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 radio 单选框获取与保持值的实现代码
2010/05/15 PHP
PHP图片处理类 phpThumb参数用法介绍
2012/03/11 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php中session定期自动清理的方法
2015/11/12 PHP
JavaScript让网页出现渐隐渐显背景颜色的方法
2015/04/21 Javascript
javascript日期比较方法实例分析
2016/06/17 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
微信小程序实现人脸识别
2018/05/25 Javascript
layer.confirm取消按钮绑定事件的方法
2018/08/17 Javascript
JavaScript递归函数定义与用法实例分析
2019/01/24 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
layui中的switch开关实现方法
2019/09/03 Javascript
解决layui数据表格Date日期格式的回显Object的问题
2019/09/19 Javascript
js实现时分秒倒计时
2019/12/03 Javascript
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
pip安装时ReadTimeoutError的解决方法
2018/06/12 Python
python中scikit-learn机器代码实例
2018/08/05 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
python 如何将数据写入本地txt文本文件的实现方法
2019/09/11 Python
Python实现socket非阻塞通讯功能示例
2019/11/06 Python
tensorflow 只恢复部分模型参数的实例
2020/01/06 Python
python实现坦克大战
2020/04/24 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
香港钟表珠宝首饰商城:OneMallTime网摩间
2016/10/14 全球购物
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
Myprotein意大利官网:欧洲第一运动营养品牌
2018/11/22 全球购物
青春奉献演讲稿
2014/05/08 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
公司酒会主持词
2015/07/02 职场文书
学子宴致辞大全
2015/07/27 职场文书
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL