对于循环和执行顺序

时间:2016-10-31 11:07:56

标签: javascript loops for-loop

我有一个for循环后跟一行代码(来自mocha的完成语句)。

是否会出现在循环完成之前执行done()的情况?对于像这样的场景,执行顺序如何在javascript中工作?

for (let i=0; result.length < i; i++) {
  assert.equal(result[i].priority, 6);
}
done();

4 个答案:

答案 0 :(得分:1)

如果您没有动态加载脚本或将它们标记为延迟或异步,则脚本将按照代码中遇到的顺序加载。它是外部脚本还是内联脚本无关紧要 - 它们按照代码中遇到的顺序执行。

答案 1 :(得分:1)

在循环“完成”之前永远不会调用完成。但是“完成”的定义在你的循环中看起来很奇怪。

for循环应该是

for(let i=0; i < result.length; i++){
    assert.equal(result[i].priority, 6);
}

当你只使用result.length时,如果结果包含任何内容,它将完全跳过循环,因为正数是一个真值。

答案 2 :(得分:0)

作为POC https://jsfiddle.net/66ppporc/只是一个小小提琴 循环完成后,将始终调用done()

快速阅读http://www.w3schools.com/tags/att_script_defer.asp

答案 3 :(得分:0)

如果你想在循环结束之前执行一个函数,你可以做这样的事情

for (let i=0; result.length; i++) {
  assert.equal(result[i].priority, 6);
    if(condition) {
           break; // stops the loop
           done(); // execute function here
        }
    continue; // continue the loop until it ends
}