为什么"undefined"结束了JavaScript中的循环?

Phi*_*hil 12 javascript for-loop

我无法理解这个for循环如何在JavaScript中终止:

var files = ["A", "B"];
for (var i = 0, f; f = files[i]; i++) {
   console.log(f);
}
Run Code Online (Sandbox Code Playgroud)

运行时,它会在屏幕上显示A和B,但为什么f = files [2]结束循环?如果我f=files[2]在我的控制台中运行,我会得到"未定义"的答案,那么这应该结束循环这一事实背后的理由是什么?

奖金问题:为什么不写下循环,如下所示?

for (var i=0; i < files.length; i++) {
    f = files[i];
    console.log(f);
}
Run Code Online (Sandbox Code Playgroud)

这对我来说似乎更清晰,更易于维护,所以有没有理由在第二段代码中使用第一段代码?

epa*_*llo 22

循环结束因为undefined假值.

使用one over another的原因是用户偏好.你有偏好,而别人喜欢另一种方式.其他人可能想要使用while循环.没有正确的方法.