javascript代码片段解释

Yoh*_*xFF 2 javascript

fnTest = /xyz/.test(function () {
        xyz;
    }) ? /\bparent\b/ : /.*/;
Run Code Online (Sandbox Code Playgroud)

我无法理解这个javascript代码片段是如何工作的.有人可以解释一下这个代码片段的逻辑吗?

And*_*ark 5

浏览器并不总是toString()对函数使用相同的实现.有些浏览器会将函数中的代码作为字符串返回,而其他浏览器则不会.

此表达式的第一部分确定浏览器是否使用函数的代码toString(),因为只有在调用该函数的结果中找到该字符串时/xyz/.test(function () { xyz; })才会给出.truexyztoString()

表达式的其余部分是三元组,它将导致/\bparent\b/或者/.*/,因此整个表达式可以如下概括:"如果浏览器使用函数的代码toString(),则设置fnTest为Regexp /\bparent\b/,否则设置fnTest/.*/.

如果要使用函数执行某些操作,则可以使用此函数,但是您知道只需要对包含名为变量的函数执行此操作parent.在支持的浏览器上,您可以使用fnTest.test(some_function)以查看是否some_function包含parent,因为toString()实现fnTest.test(some_function)将无法进行此确定的浏览器将始终返回true,因为/.*/它将匹配所有字符串.