Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript测试函数_Javascript - Fatal编程技术网

javascript测试函数

javascript测试函数,javascript,Javascript,可能重复: 我在文章中发现: /xyz/.test(function(){xyz;}) 我看了这个,不知道xyz是如何传递给调用程序的。所以我在控制台中做了一些类似的测试: /xyz/.test(function(){xya;}) > false /xyz/.test(function(){xyz;}) > true /xyz/.test(function(){'xya';}) > false /xyz/.test(function(){'xyz';}) >

可能重复:

我在文章中发现:

/xyz/.test(function(){xyz;})
我看了这个,不知道xyz是如何传递给调用程序的。所以我在控制台中做了一些类似的测试:

/xyz/.test(function(){xya;}) > false
/xyz/.test(function(){xyz;}) > true    

/xyz/.test(function(){'xya';}) > false
/xyz/.test(function(){'xyz';}) > true

/xyz/.test(function(){console.log('xya');}) > false
/xyz/.test(function(){console.log('xyz');}) > true

/xyz/.test(function(xya){}) > false
/xyz/.test(function(xyz){}) > true

/fuc/.test(function(){}) > false
/func/.test(function(){}) > true

似乎
.test()
函数将参数转换为字符串,然后进行测试。那么,为什么使用
/xyz/.test(function(){xyz;})
而不是
/xyz/.test('xyz')

其有效的测试是:

(function(){xyz;}).toString()

返回可识别的javascript源代码:

“(函数(){xyz;})”

与某些实现可能返回的一些古怪的东西相反


它使用
.test
将函数转换为字符串,然后验证内部标记(
xyz
)是否在结果中可见。

我还没有阅读整篇文章,但这似乎是某种浏览器/功能嗅探

John正在检查匿名
函数(){xyz;}
是否正在转换为字符串
“function(){xyz;}”
。可能有浏览器将其转换为其他内容,这就是他正在检查的内容


然而,在我看来,这确实有点巫毒…

这很神秘,但这是由文章底部的前几条评论中的一条提出的(并进行了某种解释)。