javascript测试功能

Ger*_*ári 8 javascript

可能重复:
有关此JavaScript语法的问题("这是做什么的?")

在这篇文章中我发现了这个:

/xyz/.test(function(){xyz;})
Run Code Online (Sandbox Code Playgroud)

我看着这个,我不知道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
Run Code Online (Sandbox Code Playgroud)

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

Ale*_* K. 5

它有效地测试了:

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

返回可识别的javascript源代码:

"(function(){xyz;})"

与某些实现可能返回的时髦的东西相反.

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