(0,eval)()有什么作用?

Gre*_*Gum 2 javascript

以下是这个问题

function q() {
console.log((0, eval)('this'));
}
Run Code Online (Sandbox Code Playgroud)

返回[对象窗口]。

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

JS在做什么呢?

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

use*_*740 5

实际上,仅在JavaScript中看到(1,eval)('this')vs eval('this')?,我现在投票将其作为副本:

.. Ecma规范认为对eval的引用是“直接eval调用”,但是仅使eval成为间接调用的表达式-保证间接eval调用可以在全局范围内执行。

(尽管以下情况[大多数]是正确的,但并非特定eval用法。)


逗号操作计算所有表达式,并产生最后一个表达式的值。

也就是说,(0, eval)求值为eval(这是一个功能对象值),使得结果表达式等于eval('this')

以另一种方式查看:

var f = (0, eval)
f === eval // true
f('this')
Run Code Online (Sandbox Code Playgroud)