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面向对象成果 借国庆发布个最新作品与大家交流
Oct 03 Javascript
利用谷歌地图API获取点与点的距离的js代码
Oct 11 Javascript
jQuery插件boxScroll实现图片轮播特效
Jul 14 Javascript
jquery插件jquery.confirm弹出确认消息
Dec 22 Javascript
JavaScript 消息框效果【实现代码】
Apr 27 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
Jan 17 Javascript
基于vue2.0+vuex的日期选择组件功能实现
Mar 13 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
Mar 30 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
May 30 Javascript
js实现搜索栏效果
Nov 16 Javascript
微信小程序实现树莓派(raspberry pi)小车控制
Feb 12 Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 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安装全攻略:APACHE
2006/10/09 PHP
利用static实现表格的颜色隔行显示
2006/10/09 PHP
php 删除cookie和浏览器重定向
2009/03/16 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
Laravel中扩展Memcached缓存驱动实现使用阿里云OCS缓存
2015/02/10 PHP
event.keyCode键码值表 附只能输入特定的字符串代码
2009/05/15 Javascript
jQuery中setTimeout的几种使用方法小结
2013/04/07 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
2013/05/31 Javascript
通过js简单实现将一个文本内容转译成加密文本
2013/10/22 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
Angularjs整合微信UI(weui)
2016/03/15 Javascript
jQuery EasyUI Tab 选项卡问题小结
2016/08/16 Javascript
分享javascript、jquery实用代码段
2016/10/20 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
浅谈JS 数字和字符串之间相互转化的纠纷
2017/10/20 Javascript
JS实现的图片选择顺序切换和循环切换功能示例【测试可用】
2018/12/28 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
nuxt.js添加环境变量,区分项目打包环境操作
2020/11/06 Javascript
从零学Python之入门(五)缩进和选择
2014/05/27 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
python入门之井字棋小游戏
2020/03/05 Python
python新式类和经典类的区别实例分析
2020/03/23 Python
python中元组的用法整理
2020/06/15 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
python从PDF中提取数据的示例
2020/10/30 Python
Python使用grequests并发发送请求的示例
2020/11/05 Python
python 制作简单的音乐播放器
2020/11/25 Python
匡威德国官网:Converse德国
2019/01/26 全球购物
凯普林包包西班牙官网:Kipling西班牙
2019/04/12 全球购物
教师实习自我鉴定
2013/12/13 职场文书
银行授权委托书范本
2014/10/04 职场文书
草房子读书笔记
2015/06/29 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书