[英]Why does this JavaScript work?
我正在查看来自UglifyJS的一些内容的输出,并发生在以下代码中:
var a = 0;
var b = function () {
return function () {
a++;
}(), 'Hello, World'
}();
运行该代码后, a
为1
, b
为字符串Hello, World!
。
乍一看,似乎b
将是undefined
因为它看起来像返回没有返回值的函数的结果,但后面跟着一个逗号和一个字符串文字。
为什么这样做?
为什么UglifyJS不执行匿名函数然后返回Hello, World!
作为下一个声明?
它由于逗号运算符而起作用。 从MDN规范:
逗号运算符计算其两个操作数(从左到右)并返回第二个操作数的值。
这两个函数都是IFFY,它们是在中间执行的。
逗号运算符计算其两个操作数(从左到右)并返回第二个操作数的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.