11

我正在使用此代码来应对一些圆圈重叠:

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 = [];
}

但是当达到 continue 语句时,chrome 的开发者控制台给了我这个:client.html:256 Uncaught SyntaxError: Undefined label 'iCantThinkOfAGoodLabelName'

4

4 回答 4

14

标签应该紧接在循环之前

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

iCantThinkOfAGoodLabelName:
for(i in circles) {
于 2011-06-18T03:26:42.270 回答
7

因为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 = [];
    }
}
于 2011-06-18T03:29:09.560 回答
3

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

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

修复它。

于 2011-06-18T03:27:27.687 回答
1

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

使用labelname:vs.iCantThinkOfAGoodLabelName:可能会对您有所帮助。

其他人已经正确地纠正了你在标签的位置。它应该在for循环之前。

标签上的Mozilla 开发者网络建议避免使用标签,而是更喜欢调用函数抛出错误。如果可能,您可能会重新考虑使用它们的策略。

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

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); 
      }
   }
}
于 2013-04-29T13:00:32.903 回答