2013-08-03 47 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()