【发布时间】:2012-02-02 04:38:00
【问题描述】:
我开始阅读JavaScript Patterns,有些codes让我感到困惑。
var global = (function () {
return this || (1, eval)('this');
}());
这是我的问题:
第一季度:
(1, eval) === eval?
为什么以及如何工作?
Q2:为什么不只是
var global = (function () {
return this || eval('this');
}());
或
var global = (function () {
return this;
}());
【问题讨论】:
-
我已经更新了标题,因为这是一个特定的案例。此外,括号用于特定类型的括号:[]和{}完全不同:)
-
自从 optional chaining 进入规范以来,间接 eval 的语法混淆程度稍低:
eval?.(…)(而不是(1, eval)(…))。由于这是 OptionalExpression 而不是 CoverCallExpressionAndAsyncArrowHead,因此对于 direct eval 而言,这也是一个间接评估。
标签: javascript eval