2012-04-12 110 views
1

有人可以解释这段代码的作用。什么是测试功能测试?这个函数做什么?什么是奇怪的语法?

temp = "blah" 
if (/from_url=$/.test(temp)) { 
    //do something 
} 

test : function(s, p) { 
    s = s.nodeType == 1 ? s.value : s; 

    return s == '' || new RegExp(p).test(s); 
} 

另外在最初的情况下,语法if(/ from_url = $ /)是做什么的?

+0

这不是jQuery - 它的普通JavaScript - 更新标签 – ManseUK 2012-04-12 08:40:50

+0

我认为他从jQuery源中复制它。至少变形的空白量和第二个块显然是从对象文本复制的事实看起来像jQuery源代码。 – ThiefMaster 2012-04-12 08:41:54

+0

@ThiefMaster啊好吧 - 我会把jQuery标签放回去...... ta – ManseUK 2012-04-12 08:42:32

回答

3

s = s.nodeType == 1 ? s.value : s;如果s.nodeType是1,那么使用s .value,否则使用s。

return s == '' || new RegExp(p).test(s);如果它是空字符串,则返回s,否则测试s是否在正则表达式p中。

if(/from_url=$/)是一个正则表达式,它正在寻找from_url=,但只有在它的最后。

0
/from_url=$/ 

是JavaScript中的正则表达式。如果字符串以“from_url=”字符串结尾你可以用

new RegExp('from_url=$') 

更换这种特殊的正则表达式检查。

+1

当使用RegExp()时,你不应该包含斜线...... – ThiefMaster 2012-04-12 08:42:24

+0

@ThiefMaster:你是对的,看到更新后的答案。 – Tadeck 2012-04-12 08:46:05

1
/from_url=$/ 

是一个正则表达式 应该翻译成检查温度,并寻找是否有“from_url =”这个文本字符串的结尾