2014-02-06 224 views
0

以下是从this question什么是(0,eval)()呢?

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

它返回[对象窗口。

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

JS在做什么?

从链接,它说它是间接调用eval()。间接意味着什么?

+0

我的问题是更多关于(0,EVAL)的一部分,它现在已经指出,作为一个用逗号的 –

回答

3

其实,刚才看到(1,eval)('this') vs eval('this') in JavaScript?,我现在已经投为重复:

..在了Ecma规范认为一个参考EVAL是一个“直接的eval呼叫”,但是一个表达式,仅仅产生eval是间接的 - 并且间接的eval调用保证在全局范围内执行。

(虽然以下是[大多]真实的,它是不是特定eval用法。)


comma operator评估所有表达式并产生最后一个表达式的值。

也就是说,(0, eval)的计算结果为eval(这是一个函数对象值),因此得到的表达式等效于eval('this')

要看到它的另一种方式:(这回答我的问题)

var f = (0, eval) 
f === eval // true 
f('this')