fnTest = /xyz/.test(function() {
xyz;
}) ? /\bparent\b/ : /.*/;
我不明白这个javascript代码片段是如何工作的。 有人可以解释我,这段代码的逻辑吗?javascript代码片段解释
fnTest = /xyz/.test(function() {
xyz;
}) ? /\bparent\b/ : /.*/;
我不明白这个javascript代码片段是如何工作的。 有人可以解释我,这段代码的逻辑吗?javascript代码片段解释
浏览器并不总是使用相同的toString()
实现功能。有些浏览器会将函数中的代码作为字符串返回,而其他浏览器则不会。
该表达式的第一部分确定是否浏览器使用在toString()
函数的代码,因为只有当字符串xyz
在该函数调用toString()
结果发现/xyz/.test(function() { xyz; })
会给true
。
表达的其余部分是一种三元这要么导致/\bparent\b/
或/.*/
,所以整个表达式可概括如下:“如果浏览器在toString()
使用函数的代码,设置fnTest
到正则表达式/\bparent\b/
,否则设置fnTest
到/.*/
。
你会使用这个,如果你要执行与功能的一些操作,但是你知道,你只需要做它包含一个名为parent
变量函数。在支持的浏览器可以使用fnTest.test(some_function)
查看some_function
是否包含parent
,对于浏览器而言由于toString()
执行将始终返回true,因为/.*/
将匹配所有字符串,因此t无法做出此确定。
codereview.stackexchange.com –