概述
只总结一些特例
let const var
1 let + for
唯一的例外是我对let声明阻塞的显式形式的偏好是一个出现在for循环的标题中的let。原因可能看起来细微,但我相信它是更重要的ES6功能之一。
试想一下:
var funcs = [];
for (let i = 0; i < 5; i++) {
funcs.push( function(){
console.log( i );
} );
}
funcs[3](); //3
funcs[3](); // 3
在for头部中的let i声明了一个i不只是for循环本身,但它为循环的每次迭代重新声明一个新的i。 这意味着在循环迭代中创建的闭包会以你期望的方式接近这些迭代变量。
如果你尝试了同样的代码段,但是在for循环头中使用var i,你将获得5而不是3,因为在外部范围中只有一个i被关闭,而不是每个迭代的新i功能关闭。
你也可以略微更冗长地完成同样的事情:
for (var i = 0; i < 5; i++) {
let j = i;
funcs.push( function(){
console.log( j );
} );
}
funcs[3](); // 3
在这里,我们为每次迭代强制创建一个新的j,然后闭包的工作方式相同。 我喜欢前一种方法; 这额外的特殊能力是我为什么赞同for(let ..)..形式。 它可以被认为它有点更隐式,但它是足够明确,有用的,符合我的口味。
let也可以使用for..in和for..of循环(参见“for..of循环”)。
最后
以上就是飞快绿茶为你收集整理的 es6只总结一些特例的全部内容,希望文章能够帮你解决 es6只总结一些特例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复