以下是来自这个问题的
function q() {
console.log((0, eval)('this'));
}
它返回对象窗口。
我不明白的是(0,eval)部分。
JS拿这个做什么?
从链接中,它表示它间接地调用eval()。间接是什么意思?
发布于 2014-02-06 15:27:01
实际上,只需看看(1 )在JavaScript中(‘this’) vs eval('this')?,我现在把它作为一个复制:
。。Ecma规范认为对eval的引用是一个“直接calls调用”,但是一个仅产生eval为间接1个间接eval调用的表达式保证在全局范围内执行。
(虽然以下内容大部分是正确的,但并不是特定于eval
的使用。)
逗号运算符计算所有表达式并生成最后一个表达式的值。
也就是说,(0, eval)
的计算结果为eval
(这是一个函数对象值),因此得到的表达式相当于eval('this')
。
换个角度看:
var f = (0, eval)
f === eval // true
f('this')
https://stackoverflow.com/questions/21616264
复制相似问题