Warum funktioniert dieses JavaScript?

Ich habe mir die Ausgabe von UglifyJS angesehen und bin auf folgenden Code gestoßen:

var a = 0;
var b = function () {
    return function () {
        a++;
    }(), 'Hello, World'
}();

Nachdem Sie diesen Code ausgeführt habena ist1 undb ist die ZeichenfolgeHello, World!.

Auf den ersten Blick sieht es so ausb wird seinundefined da es so aussieht, als würde das Ergebnis einer Funktion ohne Rückgabewert zurückgegeben, gefolgt von einem Komma und einem String-Literal.

Warum funktioniert das?
Und warum führt UglifyJS nicht einfach die anonyme Funktion aus und kehrt dann zurück?Hello, World! als nächste aussage?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage