Dlaczego ten JavaScript działa?

Patrzyłem na dane wyjściowe niektórych rzeczy z UglifyJS i zdarzyło mi się znaleźć jakiś kod podobny do następującego:

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

Po uruchomieniu tego kodua jest1 ib jest ciągiemHello, World!.

Na pierwszy rzut oka wygląda takb będzieundefined ponieważ wygląda na to, że zwracany jest wynik funkcji bez zwracanej wartości, po której następuje przecinek i literał ciągu.

Dlaczego to działa?
I dlaczego UglifyJS po prostu nie wykonuje funkcji anonimowej, a następnie powracaHello, World! jako następne oświadczenie?

questionAnswers(4)

yourAnswerToTheQuestion