JavaScript中用逗号分隔的数字/函数(在括号内)是什么意思?

4

我从 doT.js 中读取了一段代码行

var global = (function(){ return this || (0||eval)('this'); }());

在它被minified之后:

l=function(){return this||(0,eval)("this")}();

那么(0, eval)是什么意思,逗号有什么作用?

我在Chrome的控制台中尝试了(0,1)(2,1)(2,{})2,1等,它总是返回最后一个。


2
我们知道他们最初为什么使用(0||eval)吗? - Asherah
很可能是为了让代码分析器不再谈论他们正在使用邪恶的 eval。但我和你一样困惑。 - btown
2
@Len 他们想要一个“间接调用 eval”:https://github.com/olado/doT/issues/26#issuecomment-5669788 - Mengdi Gao
1个回答

4

在链接页面的“对eval的间接调用”部分中,它解释说通过使用(0,eval),“我们可以使用逗号运算符来构造一个对eval的间接调用,这将强制它在全局上下文中执行”。 - cokeman19

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接