<分区>
以下来自this question
function q() {
console.log((0, eval)('this'));
}
它返回[对象窗口]。
我没有得到的是其中的 (0,eval) 部分。
JS 用这个做什么?
从链接中可以看出,它正在间接调用 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 - JsTree 的节点未使用在 IE 中的类型插件中指定的图标