以下内容来自这个问题 https://stackoverflow.com/questions/14119988/return-this-0-evalthis/14120023#14120023
function q() {
console.log((0, eval)('this'));
}
它返回[对象窗口]。
我不明白的是其中的 (0,eval) 部分。
JS 用这个做什么?
从链接中可以看出,它正在间接调用 eval()。间接是什么意思?
其实只要看看JavaScript 中 (1,eval)('this') 与 eval('this') 比较? https://stackoverflow.com/a/9107367/2864740,我现在已将其投票为重复项:
.. Ecma 规范认为对 eval 的引用是“直接 eval 调用”,但仅产生 eval 的表达式是间接的——并且保证间接 eval 调用在全局范围内执行。
(虽然以下内容[大部分]是正确的,但它是不具体 to eval
usage.)
The 逗号运算符 http://es5.github.io/x11.html#x11.14计算所有表达式并生成最后一个表达式的值。
那是,(0, eval)
评估为eval
(这是一个函数对象值),这样结果表达式相当于eval('this')
.
从另一个角度来看:
var f = (0, eval)
f === eval // true
f('this')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)