以下是这个问题
function q() {
console.log((0, eval)('this'));
}
Run Code Online (Sandbox Code Playgroud)
返回[对象窗口]。
我没有得到的是这个的(0,eval)部分。
JS在做什么呢?
它表示从链接中间接调用eval()。间接是什么意思?
实际上,仅在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)
| 归档时间: |
|
| 查看次数: |
1989 次 |
| 最近记录: |