(0,eval)()做什么?

时间:2014-02-06 23:24:28

标签: javascript

以下内容来自this question

function q() {
console.log((0, eval)('this'));
}

返回[对象窗口]。

我没有得到的是(0,eval)部分。

JS在做什么?

从链接中,它表示它间接调用eval()。间接是什么意思?

1 个答案:

答案 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')