我正在探讨一些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)
答案 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