在javascript中正确使用continue
我一直认为您可以按如下方式使用continue:在javascript中正确使用continue,javascript,loops,Javascript,Loops,我一直认为您可以按如下方式使用continue: var i; for (i = 0; i < 10; i++) { if(i%2===0) { continue; } } vari; 对于(i=0;i
var i;
for (i = 0; i < 10; i++) {
if(i%2===0) {
continue;
}
}
vari;
对于(i=0;i<10;i++){
如果(i%2==0){
继续;
}
}
或
vari,myloop;
myloop:for(i=0;i<10;i++){
如果(i%2==0){
继续myloop;
}
}
但当我运行这两段代码时,我得到了错误:
Problem at line 5 character 5: Unexpected 'continue'.
continue;
第5行的问题字符5:意外的“继续”。
继续;
我做错了什么?正确的用法是什么?我想:
几乎总是有更好的写作方式
语句,更明确地定义在没有
求助于继续。JSLint是关于好的部分,而不是关于
可接受的零件。它迫使您使用比标准更高的标准
定义
道格拉斯在他的书中说得最好:
“continue语句跳转到循环的顶部。我从未见过任何片段
未通过重构来删除“继续”而得到改进的代码的数量
声明。”
您必须勾选“容忍继续”。JSlint底部有一个选项 容忍继续
也许它有问题?JSLint不喜欢
continue
,因为道格拉斯不喜欢它
继续
跳到下一个迭代。如果不插入它,代码将继续执行。如果要退出循环,请使用break
这对我来说已经足够好了。
//eslint禁用下一行不继续
这太愚蠢了。”“继续”使循环中的“提前退出”变得容易。我想内部循环可以放在外部函数中,以保持可读性,但这并不总是方便的。@Evert:你一定把continue和break混淆了(break按你说的做,Crockford并不反对)。不,对不起。。假设您想循环一个数组,但只对该数组中的某些元素执行某些操作。如果(!条件)继续,我可以做;在循环的顶部,或者if(condition){..}stuff。前者的优点是嵌套少了一个层次。@Evert:我明白了,现在我明白你的措辞了(‘在循环中提前退出’把我弄糊涂了)。关于continue与nesting的问题,关键是拥有额外级别的nesting是一件好事,因为它提供了一个清晰的视觉线索,即代码仅在满足条件时才应用。(就我个人而言,我不确定我是更同意克罗克福德还是你,但我绝对不会称之为“如此愚蠢”。)我从来都不明白什么东西这么难读。在你建立的第二次迭代中,你不再需要在给定的迭代中做任何其他事情,没有理由不使用它。你必须将var i
向上移动,才能达到这个程度,对吗?改进代码是JSLint的第二个关注点,强制执行DougCrockford关于JavaScript是其第一个的个人观点。如果你想要一个不那么固执己见的选择,总会有办法的。JSHint。杰斯林特太教条了。
Problem at line 5 character 5: Unexpected 'continue'.
continue;