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?