反正 ES 规范原文里没有这句话:https://262.ecma-internationa...中文网络里我能找到的最早的出处是 2012-09-30 来自这篇博客:https://www.cnblogs.com/libin... 不过看起来机翻味很浓,感觉应该是有一篇英文原文的才对。英文网络里倒也能搜到一些博客或文章有这种说法,但发布时间都比上面这篇要晚。源头就这么断了。所以鬼知道是什么意思。同样地,有一些文章会将此描述为“精准的迭代语句”(precise iterative statement )。这个就比较好理解了,就是指 for-in 循环不需要你手动控制次数、它一定会把目标对象的可枚举属性遍历完的,也不会有越界的风险。反之 for / while / do-while 等则都需要你手动控制次数才可以。而如果你在循环内部里尝试改变了被循环对象,很可能造成越界或部分丢失的结果。
反正 ES 规范原文里没有这句话:https://262.ecma-internationa...
中文网络里我能找到的最早的出处是 2012-09-30 来自这篇博客:https://www.cnblogs.com/libin... 不过看起来机翻味很浓,感觉应该是有一篇英文原文的才对。
英文网络里倒也能搜到一些博客或文章有这种说法,但发布时间都比上面这篇要晚。源头就这么断了。
所以鬼知道是什么意思。
同样地,有一些文章会将此描述为“精准的迭代语句”(precise iterative statement )。
这个就比较好理解了,就是指 for-in 循环不需要你手动控制次数、它一定会把目标对象的可枚举属性遍历完的,也不会有越界的风险。
反之 for / while / do-while 等则都需要你手动控制次数才可以。而如果你在循环内部里尝试改变了被循环对象,很可能造成越界或部分丢失的结果。