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;}”
。可能有浏览器将其转换为其他内容,这就是他正在检查的内容
然而,在我看来,这确实有点巫毒…这很神秘,但这是由文章底部的前几条评论中的一条提出的(并进行了某种解释)。