以下内容来自this question
function q() {
console.log((0, eval)('this'));
}
返回[对象窗口]。
我没有得到的是(0,eval)部分。
JS在做什么?
从链接中,它表示它间接调用eval()。间接是什么意思?
答案 0 :(得分:3)
实际上,只需看(1,eval)('this') vs eval('this') in JavaScript?,我现在已将其视为副本:
.. Ecma规范认为对eval的引用是“直接eval调用”,但是表达式只是将eval作为间接调用 - 并且间接eval调用保证在全局范围内执行。
(虽然以下[大部分]都是正确的,但{em>不具体到eval
用法。)
comma operator评估所有表达式并产生最后一个表达式的值。
也就是说,(0, eval)
求值为eval
(这是一个函数对象值),这样得到的表达式等同于eval('this')
。
以另一种方式看待它:
var f = (0, eval)
f === eval // true
f('this')