【发布时间】:2014-05-13 00:13:37
【问题描述】:
前几天我用 JSFiddle 检查了 my script 并在其中一行收到警告:Don't make functions within a loop。
for (x = 0; x < 10; x++) {
if (moment(now) > moment(then)) {
doIt(x); // do it now
} else {
timeTillEnd = moment(then) - moment(now);
setTimeout(function () {
doIt(x); // do it later
}, timeTillEnd); // <-- flagged here
}
}
为什么我不应该在 Javascript 中的循环中创建函数?
另外:在此处显示的特定情况下使用函数会不会有问题?
【问题讨论】:
-
x不是你想的那样。 -
因为 JavaScript 只有函数作用域,每个函数都引用同一个变量
x。 -
那你大概知道stackoverflow.com/questions/22751323/…的答案了; @FelixKling
-
看看stackoverflow.com/questions/750486/…,那里都有答案。
标签: javascript function loops