【发布时间】:2012-07-28 13:11:09
【问题描述】:
在 Douglas Crockford 的 Javascript: The Good Parts 一书中,这就是作者对 continue 语句要说的全部内容:
continue语句跳转到循环的顶部。我从未见过没有通过重构删除continue语句来改进的代码。
这真的让我很困惑。我知道 Crockford 对 JavaScript 有一些非常固执的观点,但这对我来说听起来完全错误。
首先,continue 不仅仅是跳转到循环的顶部。默认情况下,它还会进行到下一次迭代。那么,克罗克福德的说法不就是完全错误的信息吗?
更重要的是,我不完全理解为什么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 在这个特定示例中并不是特别有用,但它确实证明了它减少了嵌套深度的事实。在更复杂的代码中,这可能会增加可读性。
Crockford 没有解释为什么不应该使用 continue,那么我错过的这个观点背后是否有更深层次的意义?
【问题讨论】:
-
关键字
continue是一个工具 - 在适用的情况下使用它。有时它是必要的,大多数时候它不是。唯一不好的时候是你不需要使用它,但是因为太懒或太草率而无法以其他方式使用它。 -
我也有同样的感觉,这就是我创建post 的原因。对我有帮助的是在使用 continue 语句时只想到
hop这个词。我认为克劳福德先生在设计语言时在这里使用了一个糟糕的选择词:P 特别是因为 hop 可以应用其背后的逻辑“继续”。如果你跳过某些东西,你通常也会继续。将马拉松田径运动员视为一个很好的类比。 -
“克劳福德先生”并非设计语言。
-
我对 Crockford 的了解越多,我就越不尊重他的意见。他似乎只是一个脾气暴躁的老看门人,有着完全非理性的品味偏好,他伪装成经验磨练的智慧。
-
@TylerH 我们可以将 Crockford 先生标记为“主要基于意见”吗?大声笑
标签: javascript readability continue