JavaScript /regex/.test()给出一个函数作为参数

时间:2013-10-10 22:42:28

标签: javascript regex

我检查了Mollzia和MS文档,我只找到了regex.test(str)API。但是,我在John Resig的Class.js中看到了test(function(){})的用法,这让我非常困惑。

源代码:class.js

代码:

fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;

fnTest.test(prop[name])

他们做了什么?

on firebug

console.log(/xyz/.test(function(){xyz;}))//true;
console.log(/xyz/.test(function(){}))//false;
console.log(/xyz/.test(function(){console(xyz);}))//true; console(xyz) not run

1 个答案:

答案 0 :(得分:0)

我认为

fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;

是浏览器功能检测的一种形式。他正在将一个函数对象传递给“test”方法,该方法应该将函数对象转换为字符串。如果其结果确实包含字符串“xyz”,则“fnTest”变量初始化为正则表达式/\b_super\b/。如果没有,那么当JavaScript环境由于某种原因(提示:IE)没有对这样的函数进行字符串化时就是这种情况,那么“fnTest”被初始化为一个匹配任何东西的正则表达式。