2012-03-14 60 views
3

我在圍繞一些HTML5 Javascript演示,碰到一些我從來沒有見過的語法。查看運行功能並注意搜索對象符號是如何在中進行的,而循環。感興趣的行包括15和18.任何人都可以解釋這種語法?冒號在Javascript函數while循環中

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

在這裏你去 http://stackoverflow.com/questions/418799/what-does-do-in-javascript 用你的谷歌,你會發現! – 2012-03-14 13:35:30

+1

@limelights這篇文章是關於冒號的更常見的用法,這裏並不是這種情況 – tybro0103 2012-03-14 13:39:32

+0

第18行中的百分比是模數 – tybro0103 2012-03-14 13:40:20

回答

5

這是不反對(字面)符號打破這個循環,這是defining a label

A label可以用來給循環構造一個名字。這樣做的好處是您可以通過引用外部循環(通過標籤)來創建更強大的breaks;continues;

注意你參考的節目的結構是怎樣一個:

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

    } 
} 

...和筆者使用continue search;for循環內繼續while循環的執行。

至於什麼在第18行,if (n % i == 0)使用modulo (%) operator獲得劃分n/i之間的剩餘部分,並檢查它是否是0

+0

好東西,你不必輸入'goto label';) – cypherabe 2012-03-14 13:40:17

+1

每天學習新的東西。 – Matt 2012-03-14 13:55:07

3

search:在這種情況下,你可以用它來指代這種循環的標籤。

例如,你可以通過做break search;

1

既然沒有人回答兩個您的問題。

search: while,這裏search是標籤這有助於唯一地識別while循環,它如所提到的,嵌套循環內使用break和/或continue時幫助。

線18 (n % i ===0)

基本上是通過應用modulo運營商尋找一個奇數。