【发布时间】:2018-06-13 20:36:39
【问题描述】:
是否可以使用var 而不是let 将函数推送到数组。我正在查看的代码是:
function slideRightLoop() {
let work = [];
for (var n = 1; n < 5; n++) {
let next = (n + 1 < 5) ? n + 1 : 1;
let el = document.querySelector(".position_" + n)[0];
var change = function change () {
el.classList.add("position" + next);
el.classList.remove("position_" + n);
}
work.push(change);
}
work.forEach(function (n) {
return n();
});
}
【问题讨论】:
-
为什么 var 不适合你?
-
@terary 我认为是因为它的块现在在每次迭代时都在范围内,因此可以重新分配并保持范围。但是,当我使用 var 时,我认为它会被提升并且不会在每个循环上重新分配。
-
because compatibility兼容性是什么意思?如果你需要支持古老的浏览器,你可以通过 Babel 运行它。另外,不要使用querySelectorAll并选择NodeList中的第一个元素,而是使用querySelector。我没有看到将每个函数放在一个数组中然后执行它的意义——为什么不只使用一个循环来执行每个块? -
@CertainPerformance 更改为
querySelector并去掉了箭头函数并更改了其中的一些变量。我只是不知道是否有可能通过将函数推送到可以使用var的数组来保持这种愚蠢,或者是否只需要废弃它并在执行时将元素推送到常规数组。
标签: javascript variables ecmascript-6 scope ecmascript-5