为什么这个标记的javaScript继续不起作用?

JJJ*_*jim 9 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 { //Overlap
    continue iCantThinkOfAGoodLabelName; //<- Line 256
  }
  thisCircle = [];
}
Run Code Online (Sandbox Code Playgroud)

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

Bra*_*ace 10

标签应该在循环之前立即出现

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

iCantThinkOfAGoodLabelName:
for(i in circles) {
Run Code Online (Sandbox Code Playgroud)

  • 这有什么理由行不通吗?我已按照说明进行操作,但遇到了同样的错误。 (2认同)

McK*_*yla 7

因为iCantThinkOfAGoodLabelName:在循环之前需要正确.

iCantThinkOfAGoodLabelName:
for (blah; blah; blah)
    ..
Run Code Online (Sandbox Code Playgroud)

我想你想要的是一个功能..

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 = [];
    }
}
Run Code Online (Sandbox Code Playgroud)