在Douglas Crockford 所着的Javascript:The Good Parts一书中,这是作者对继续声明所说的全部内容:
该
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这可以重构为:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
continue在这个具体的例子中并不是特别有益,但它确实证明了它减少了嵌套深度的事实.在更复杂的代码中,这可能会提高可读性.
Crockford没有解释为什么continue不应该使用,所以这个意见背后有一些更深层次的意义,我错过了吗?