在Douglas Crockford的Javascript: the Good Parts一书中,这是作者对continue语句的所有看法:
continue
语句跳转到循环的顶部。我从来没有见过一段代码没有通过重构来删除continue
语句而得到改进。
这真的让我很困惑。我知道克罗克福德对JavaScript有一些非常固执己见的观点,但这在我看来是完全错误的。
首先,continue
不仅仅是跳到循环的顶部。默认情况下,它还会前进到下一次迭代。那么Crockford的陈述不就是完全错误的信息吗?
更重要的是,我不完全理解为什么continue
会被认为是不好的。这篇文章似乎提供了一个普遍的假设:Why is continue inside a loop a bad idea?
虽然我理解continue
在某些情况下可能会使代码难以阅读,但我认为它同样可以使代码更具可读性。例如:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]==='number'){
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
}
这可以重构为:
var someArray=['blah',5,'stuff',7];
for(var i=0;i<someArray.length;i++){
if(typeof someArray[i]!=='number'){
continue;
}
for(var j=0;j<someArray[i];j++){
console.log(j);
}
}
在这个特定的示例中,continue
并不是特别有用,但它确实证明了它减少了嵌套深度的事实。在更复杂的代码中,这可能会增加可读性。
克罗克福德没有解释为什么不应该使用continue
,那么在我遗漏的这个观点背后是否有更深层次的意义呢?
https://stackoverflow.com/questions/11728757
复制相似问题