Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
1年前关闭。
Improve this question
在道格拉斯·克罗克福德(Douglas Crockford)撰写的《 Javascript:好的零件》一书中,这就是作者关于继续陈述的全部内容
这真的让我感到困惑。我知道Crockford对JavaScript有一些很固执的看法,但这对我来说完全是错误的。
首先,
更重要的是,我不完全理解为什么
Why is continue inside a loop a bad idea?
尽管我了解
可以将其重构为:
Crockford没有提供关于为什么不应该使用
目标是避免使用“lasagna”代码,因为在该代码中嵌套了很多条件语句。
编辑添加:
是的,这最终是主观的。 Here's my metric for deciding.
最后编辑一次:
当然,该示例太简单了,您始终可以使用函数调用来替换嵌套条件。但是随后,您可能必须通过引用将数据传递到嵌套函数中,这可能会导致重构问题,至少与您要避免的问题一样严重。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
1年前关闭。
Improve this question
在道格拉斯·克罗克福德(Douglas Crockford)撰写的《 Javascript:好的零件》一书中,这就是作者关于继续陈述的全部内容
这真的让我感到困惑。我知道Crockford对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
在此特定示例中并不是特别有用,但是它确实证明了它减少了嵌套深度的事实。在更复杂的代码中,这可能会提高可读性。Crockford没有提供关于为什么不应该使用
continue
的解释,所以我所缺少的这种见解背后还有更深层的意义吗? 最佳答案
这项声明很荒谬。 continue
可能会被滥用,但通常有助于提高可读性。
典型用途:
for (somecondition)
{
if (!firsttest) continue;
some_provisional_work_that_is_almost_always_needed();
if (!further_tests()) continue;
do_expensive_operation();
}
目标是避免使用“lasagna”代码,因为在该代码中嵌套了很多条件语句。
编辑添加:
是的,这最终是主观的。 Here's my metric for deciding.
最后编辑一次:
当然,该示例太简单了,您始终可以使用函数调用来替换嵌套条件。但是随后,您可能必须通过引用将数据传递到嵌套函数中,这可能会导致重构问题,至少与您要避免的问题一样严重。
关于javascript - 为什么 “continue”语句在JavaScript中不好? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11728757/
10-12 02:57