2013-08-03 71 views
2

我正在與karma.js庫現在工作。我正在那裏通過示例項目,並遇到了一些我不太瞭解的代碼。我相信這很容易,但是解釋對於理解lib在做什麼非常有幫助。從我所能理解的是,它循環遍歷__karma__對象中的文件,並在if語句中與/Spec\.js$/進行某種正則表達式匹配。一些JavaScript語法,我不明白

for (var file in window.__karma__.files) { 
    if (/Spec\.js$/.test(file)) { 
     tests.push(file); 
    } 
} 

如果這是一個正則表達式匹配,您可以直接從一個字符串去訪問javascript中的一個對象。這真的很有趣。

感謝您的幫助。

回答

4

這是一個for-in循環。它通過一個對象的枚舉屬性來查看。因此,舉例來說,如果您有:

var obj = { 
    a: 42, 
    b: 27 
}; 

...然後在循環中,file"a"在道次和"b"另一個(但不定義的順序)。

其中var只是聲明一個變量。請注意,與其他一些語言不同,該變量是而不是僅限於循環範圍,該聲明在功能範圍內。

正則表達式/Spec\.js$/正在檢查字符串是否以"Spec.js"結尾。在正則表達式中,$匹配「行結束/輸入」。在.之前需要反斜槓,因爲未轉義的.與任何字符匹配。

更多for-in

更多var

+0

如何在正則表達式的一部分? – jhamm

+0

@jhamm:啊,錯過了那一點。添加。 –

0

事實上,你可以從一個字面值直接進入在JavaScript訪問它的屬性:

/^regex$/.test(...) 

"a string".split(...) 

等一切工作。

與數字,但是你需要特殊處理:

(1).toString()