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 插件制作实践 xMarquee插件V1.0
Apr 02 Javascript
基于jquery扩展漂亮的下拉框可以二次修改
Nov 19 Javascript
js获取客户端外网ip的简单实例
Nov 21 Javascript
js弹出确认是否删除对话框
Mar 27 Javascript
js的toUpperCase方法用法实例
Jan 27 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
May 11 Javascript
JS实现页面跳转参数不丢失的方法
Nov 28 Javascript
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
Dec 01 Javascript
javascript基础练习之翻转字符串与回文
Feb 20 Javascript
vue通过数据过滤实现表格合并
Nov 30 Javascript
vue跳转方式(打开新页面)及传参操作示例
Jan 26 Javascript
vue 解决在微信内置浏览器中调用支付宝支付的情况
Nov 09 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
摩卡咖啡
2021/03/03 咖啡文化
用PHP发电子邮件
2006/10/09 PHP
Yii CFileCache 获取不到值的原因分析
2017/02/08 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
JavaScript面向对象之Prototypes和继承
2012/07/12 Javascript
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
javascript实现禁止鼠标滚轮事件
2015/07/24 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
Json对象和字符串互相转换json数据拼接和JSON使用方式详细介绍(小结)
2016/10/25 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
使用Nuxt.js改造已有项目的方法
2018/08/07 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
Python编写简单的HTML页面合并脚本
2016/07/11 Python
深入理解NumPy简明教程---数组2
2016/12/17 Python
Windows安装Python、pip、easy_install的方法
2017/03/05 Python
python 输出所有大小写字母的方法
2019/01/02 Python
Python异常处理知识点总结
2019/02/18 Python
Python中的引用知识点总结
2019/05/20 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
Django实现whoosh搜索引擎使用jieba分词
2020/04/08 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
eHarmony英国:全球领先的认真恋爱约会平台之一
2020/11/16 全球购物
学期自我评价
2014/01/27 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
银行岗位培训心得体会
2016/01/09 职场文书
高三数学教学反思
2016/02/18 职场文书
2016基督教会圣诞节开幕词
2016/03/04 职场文书
导游词之河北滦平金山岭长城
2019/10/16 职场文书
FP-growth算法发现频繁项集——构建FP树
2021/06/24 Python
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL