私は UglifyJS からのいくつかの出力を見ていましたが、次のようなコードに出くわしました:
var a = 0;
var b = function () {
return function () {
a++;
}(), 'Hello, World'
}();
そのコードを実行した後a
は1
、b
文字列Hello, World!
です。
一見、戻り値のない関数の結果が返されているように見えますが、その後にカンマと文字列リテラルが続くため、そうb
なるように見えます。undefined
なぜこれが機能するのですか?
そして、なぜ UglifyJS は無名関数を実行しHello, World!
てから次のステートメントとして返さないのでしょうか?