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