在 Douglas Crockford 所著的Javascript: The Good Parts一书中,作者对 continue 语句的看法如下:
该
continue
语句跳转到循环的顶部。我从未见过没有通过重构删除continue
语句来改进的代码。
这真的让我很困惑。我知道 Crockford 对 JavaScript 有一些非常固执的观点,但这对我来说听起来完全错误。
首先,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
不应该被使用,那么我错过的这个观点背后是否有更深层次的意义?