在Douglas Crockford的书籍《Javascript: The Good Parts》中,关于continue语句作者只是这样说的:“continue语句跳到循环的顶部。我从来没有看到过一段代码,它不通过重构而变得更好,以消除continue语句。” 这让我非常困惑。我知道Crockford对JavaScript有些非常主观的看法,但这听起来完全是错误的。首先,continue不仅可以跳到循环的顶部,而且默认情况下还会进入下一个迭代。那么Crockford的陈述不就是完全错误的信息吗?更重要的是,我完全不明白为什么continue甚至被认为是不好的。这篇文章提供了似乎是一般假设的原因:为什么在循环内使用continue是个坏主意? 虽然我理解在某些情况下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
在这个特定的例子中并没有特别有益,但它确实展示了它减少了嵌套深度的事实。在更复杂的代码中,这可能会增加可读性。
Crockford没有解释为什么不应该使用continue
,那么这个观点背后是否有一些更深层次的意义我没有理解?