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

前端之家收集整理的这篇文章主要介绍了Javascript for循环与对象而不是计数器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
看看这段代码
for (var i = 0,f; f = families[i]; i++) {
}

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

我本以为它需要像f ==系列[2]才能返回false.

解决方法

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

如果families.length === 2那么族[2] === undefined因此表达式返回undefined,这是假的并且打破了循环.

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

for (var i = 0,f; f = families[i]; i++) {
  // body
}

for (var i = 0,f; f = families[i++]; /* body */);

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

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

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

显着性更强.

猜你在找的JavaScript相关文章