2013-07-27 53 views
2

我正在讀一本關於單頁面應用程序並在某些時候有這個for ... in循環:未知的JavaScript語法...在

KEYVAL: 
for(key_name in arg_map){ 
    if(arg_map.hasOwnProperty(key_name)){ 
     if(key_name.indexOf('_') === 0) continue KEYVAL; 

     anchor_map_revise[key_name] = arg_map[key_name]; 

     key_name_dep = '_' + key_name; 
     if(arg_map[key_name_dep]){ 
      anchor_map_revise[key_name_dep] = arg_map[key_name_dep]; 
     } 
     else{ 
      delete anchor_map_revise[key_name_dep]; 
      delete anchor_map_revise['_s' + key_name_dep]; 
     } 
    } 
} 

真正吸引我的眼睛是KEYVAL在循環之前。這是一個變量嗎?它代表什麼?它是爲了什麼?這個語法是什麼意思?這個詞只出現在包含的代碼中的兩個地方,而整個例子中再也沒有。

我一直在尋找很多試圖弄清楚這一點,但到目前爲止我還沒有找到任何信息。有人可以幫我嗎?

謝謝。

+0

這是一個[標籤](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/label):-) –

+0

不應該KEYVAL:是否在塊的結尾?我想,在for()之前,它看起來會重置for循環,導致無限循環。 – Paul

+0

@Paul - 默認情況下沒有標籤 - 標籤用於放置之前,正是它們存在的原因。 – Hogan

回答

3

KEYVAL:這裏是一個標籤,在你的循環中用於迭代操作。看看documentation

它類似於GOTO語句。

它在你的代碼是什麼時,這種情況成爲現實

if(key_name.indexOf('_') === 0) continue KEYVAL; 

其轉到標籤KEYVAL:和不執行下面這行代碼再次運行循環。

3

這是一個label,這是一種行號,但未鎖定到行位置。

繼續像GOTO一樣跳轉到此標籤。

當該標準被furfilled:

if(key_name.indexOf('_') === 0) continue KEYVAL; 

的JavaScript從以上標籤繼續。