Я смотрел вывод некоторых вещей из UglifyJS и происходил через какой-то код вроде:
var a = 0;
var b = function () {
return function () {
a++;
}(), 'Hello, World'
}();
После запуска этого кода a есть 1 и b - строка Hello, World!.
На первый взгляд кажется, что b будет undefined, поскольку он выглядит как результат функции без возвращаемого значения, но за этим следует запятая и строковый литерал.
Почему это работает?
И почему UglifyJS просто выполняет анонимную функцию, а затем возвращает Hello, World! в качестве следующего утверждения?