javascript - (0, eval) () 是做什么的?

标签 javascript

<分区>

以下来自this question

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

它返回[对象窗口]。

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

JS 用这个做什么?

从链接中可以看出,它正在间接调用 eval()。间接是什么意思?

最佳答案

其实看(1,eval)('this') vs eval('this') in JavaScript?就可以了,我现在已将其投票为重复项:

.. the Ecma spec considers a reference to eval to be a "direct eval call", but an expression that merely yields eval to be an indirect one -- and indirect eval calls are guaranteed to execute in global scope.

(虽然以下内容 [大部分] 正确,但不特定 eval 用法。)


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

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

换个 Angular 看:

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

关于javascript - (0, eval) () 是做什么的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21616264/

相关文章:

javascript - $.ajaxSetup 全局数据未合并到加载函数中

javascript - 倒计时器 : pause button won't pause or change back into play button

javascript - Browserify Babel ES2015 Knockout 相互依赖模块

javascript - 使用 JavaScript 和 jQuery 计算尺寸

javascript - 基于一天中的小时的 body 背景 JS

javascript - 改变中位数li前后li的css

javascript - JsTree 的节点未使用在 IE 中的类型插件中指定的图标

javascript - 使用javascript设置IFrame allowfullscreen

javascript - 如何动态地将图像放入框中?

javascript - jQuery 在元素动画之后滚动到元素