循环中Javascript函数内的冒号

时间:2012-03-14 13:33:07

标签: javascript html5

我正在探讨一些HTML5 Javascript演示,并在语法中遇到了我以前从未见过的东西。查看run函数并注意搜索对象符号在 while循环中的表示方式。感兴趣的行包括15和18.任何人都可以解释这种语法吗?

function run() {
  var n = 1;
  search: while (running) {
    n += 1;
    for (var i = 2; i <= Math.sqrt(n); i += 1)
      if (n % i == 0)
       continue search;
    // found a prime!
    postMessage(n);
  }
}

(代码取自此处; http://html5demos.com/js/cruncher.js

4 个答案:

答案 0 :(得分:5)

这不是对象(文字)表示法,而是defining a label

label可用于为循环结构赋予名称。这样做的好处是,您可以通过引用外部循环(通过其标签)来创建更强大的breaks;continues;

注意,您引用的程序结构如何:

search: while () {
   for (;;;) {

   }
}

...并且作者在continue search;循环中使用for 继续执行while循环。

至于第18行发生了什么,if (n % i == 0)正在使用modulo (%) operator获取除n / i之间的余数,并检查它是否为0。

答案 1 :(得分:3)

在这种情况下,

search:是一个标签,您可以用它来引用此循环。

例如,你可以通过break search;

来打破这个循环

答案 2 :(得分:1)

由于没有人回答两个你的问题。

search: while,此处search是一个标签,有助于唯一标识while循环,如上所述,在嵌套循环中使用break和/或continue时会有所帮助。

第18行(n % i ===0)

基本上是通过应用modulo运算符来寻找奇数。

答案 3 :(得分:0)

这是一个标签,主要用于嵌套循环,以打破/继续由此标签标记的特定循环。这是每种编程语言的标准,而不是特定于JavaScript的标准。有关详细信息,请参阅“使用标签控制流程”部分

http://www.tutorialspoint.com/javascript/javascript_loop_control.htm