Javascript for循环与对象而不是计数器?

Jam*_*ght 6 javascript for-loop

看看这段代码:

for (var i = 0, f; f = families[i]; i++) {
}
Run Code Online (Sandbox Code Playgroud)

我之前没有真正看过这样的循环,我想确保我理解正确.
我是否正确假设如果families.length == 2该行的第二部分for将返回false f = families[2]

我本以为它需要像是f == families[2]为了返回虚假.

Ray*_*nos 11

f = families[i]是一个返回值的表达式families[i].(它还具有分配该值的副作用f)

那么如果families.length === 2那么families[2] === undefined表达式返回undefinedfalse,并打破循环.

为了获得更多的黑客乐趣,你可以转向

for (var i = 0, f; f = families[i]; i++) {
  // body
}
Run Code Online (Sandbox Code Playgroud)

for (var i = 0, f; f = families[i++]; /* body */);
Run Code Online (Sandbox Code Playgroud)

您可能需要字符串替换;,和字符串替换ii-1.你也只是谋杀了可读性.

还应该指出for循环对于可读性来说是愚蠢的.

Object.keys(families).forEach(function(key) {
  var family = families[key];
  /* body */
});
Run Code Online (Sandbox Code Playgroud)

显着性更强.

  • *你也只是谋杀了可读性.*嘿嘿.Mustard上校带着键盘的天文台. (2认同)