knp*_*wrs 19 javascript uglifyjs
我正在查看来自UglifyJS的一些内容的输出,并发生在以下代码中:
var a = 0;
var b = function () {
return function () {
a++;
}(), 'Hello, World'
}();
Run Code Online (Sandbox Code Playgroud)
运行后,该代码a是1和b字符串Hello, World!.
乍一看似乎b是undefined因为看起来返回值没有返回值的函数的结果,但后面跟着一个逗号和一个字符串文字.
为什么这样做?
为什么UglifyJS不执行匿名函数然后Hello, World!作为下一个语句返回?
Wou*_*r J 25
它由于逗号运算符而起作用.从MDN规范:
逗号运算符计算其两个操作数(从左到右)并返回第二个操作数的值.
这两个函数都是IFFY,它们是在中间执行的.
你有:
return a_function_call(), a_string
Run Code Online (Sandbox Code Playgroud)
......所以你被a_string分配了.