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中escape对应的C#解码函数 UrlDecode
Dec 16 Javascript
JavaScript自定义等待wait函数实例分析
Mar 23 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
Nov 17 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
Mar 08 Javascript
js实现内容显示并使用json传输数据
Mar 16 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
Dec 26 Javascript
vue模板语法-插值详解
Mar 06 Javascript
Angular2 组件通信的实例代码
Jun 23 Javascript
利用纯js + transition动画实现移动端web轮播图详解
Sep 10 Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
Jul 15 Javascript
vue css 相对路径导入问题级踩坑记录
Jun 05 Vue.js
简单实现轮播图效果的实例
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输出xml属性的方法
2015/03/19 PHP
PHP单链表的实现代码
2016/07/05 PHP
js类中获取外部函数名的方法
2007/08/19 Javascript
Javascript读取cookie函数代码
2010/10/16 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
JavaScript Math.ceil 方法(对数值向上取整)
2015/01/09 Javascript
JavaScript实现页面跳转的几种常用方式
2015/11/28 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
早该知道的7个JavaScript技巧
2016/06/21 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
原生js编写焦点图效果
2016/12/08 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
小程序实现抽奖动画
2020/04/16 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
vue集成chart.js的实现方法
2019/08/20 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
JS数组转字符串实现方法解析
2020/09/04 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
Python中unittest用法实例
2014/09/25 Python
Python中str is not callable问题详解及解决办法
2017/02/10 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
实习生的自我评价
2014/01/08 职场文书
水利学院求职自荐书
2014/02/01 职场文书
倡议书范文
2014/04/16 职场文书
本科生导师推荐信范文
2014/05/18 职场文书
护士求职自荐信
2015/03/25 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
中秋节随笔
2015/08/15 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
java设计模式--建造者模式详解
2021/07/21 Java/Android
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android
Python实现提取PDF简历信息并存入Excel
2022/04/02 Python