为什么这个标记为javaScript的程序不能继续工作?

为什么这个标记为javaScript的程序不能继续工作?,javascript,continue,labeled-statements,Javascript,Continue,Labeled Statements,我使用此代码判断某些圆是否重叠: iCantThinkOfAGoodLabelName: x = genX(radius); y = genY(radius); for(i in circles) { var thisCircle = circles[i]; if(Math.abs(x-thisCircle["x"])+Math.abs(y-thisCircle["y"])>radius*2) { //No overlap continue; } else { //Ov

我使用此代码判断某些圆是否重叠:

iCantThinkOfAGoodLabelName:
x = genX(radius);
y = genY(radius);
for(i in circles) {
  var thisCircle = circles[i];
  if(Math.abs(x-thisCircle["x"])+Math.abs(y-thisCircle["y"])>radius*2) { //No overlap
    continue;
  } else { //Overlap
    continue iCantThinkOfAGoodLabelName; //<- Line 256
  }
  thisCircle = [];
}
ICAntThinkFoodLabelName:
x=genX(半径);
y=genY(半径);
for(i在圆圈中){
var thisCircle=圆[i];
如果(Math.abs(x-thisCircle[“x”])+Math.abs(y-thisCircle[“y”])>半径*2{//无重叠
继续;
}否则{//重叠

继续ICAntThinkFoodLabelName;//标签应紧跟在循环之前

x = genX(radius);
y = genY(radius);

iCantThinkOfAGoodLabelName:
for(i in circles) {

标签名称和关联循环之间不应有任何语句

x = genX(radius);
y = genY(radius);
iCantThinkOfAGoodLabelName:
    for(i in circles) {

修复它。

因为
iCantThinkOfAGoodLabelName:
需要在循环之前

iCantThinkOfAGoodLabelName:
for (blah; blah; blah)
    ..
我想你想要的是一个函数

function iCantThinkOfAGoodFunctionName() {
    var x = genX(radius),
        y = genY(radius);

    for (i in circles) {
        var thisCircle = circles[i];
        if(Math.abs(x-thisCircle["x"])+Math.abs(y-thisCircle["y"])>radius*2) { //No overlap
            continue;
        } else { //Overlap
            iCantThinkOfAGoodFunctionName();
        }
        thisCircle = [];
    }
}

我最近遇到了这个问题,我通过在Node.js的版本
v0.8.x
中使用循环中的所有小写字母标签解决了这个问题

使用
labelname:
icanthinkofagoodlabelname:
可能会对您有所帮助

其他人已正确更正了标签的位置。标签应位于
for
循环之前

建议避免使用标签,而应选择或选择错误。如果可能,您可能会重新考虑使用标签的策略

根据结果调用函数的示例:

var i, j;

for (i = 0; i < 3; i++) {
   for (j = 0; j < 3; j++) {   
      if (i == 1 && j == 1) {
         // we want to ignore and continue
      } else {
         // do work with these variables from inside the doWork function
         // (scoped to whatever scope `this` for loop is in)
         doWork.call(this, i, j); 
      }
   }
}
vari,j;
对于(i=0;i<3;i++){
对于(j=0;j<3;j++){
如果(i==1&&j==1){
//我们想忽略并继续
}否则{
//从doWork函数内部使用这些变量
//(作用域为“this”for循环所处的任何作用域)
doWork.调用(this,i,j);
}
}
}

在这种情况下,任何关于如何生成X和Y值的建议都将非常有帮助-没有理由不在标签之前生成它们。标签的存在不会以任何方式影响这些行。有任何理由认为这不起作用吗?我已经按照说明进行了操作,但我只是得到了相同的错误。你有没有ied
break
而不是
continue
?也许
continue
只能跳转到循环语句上的标签。