В следующем примере JavaScript, кажется, полностью игнорирует мой оператор return
и просто выполняет исполняемый код.Выполнение кода JavaScript после возврата
var x = 1;
(function() {
x = 2;
return;
var x = 3;
})();
console.log(x); // Outputs 1 in both Chrome and FF
Несомненно, код должен выводить 2
? Если я удалю ключевое слово var
с var x = 3
, он выдает 2
, как и ожидалось. Существует ли какая-то странная оптимизация компилятора?
Я думаю, что 'x' отличается внутри функции. Простое исправление должно было бы сделать' window.x = 2' – Madushan
Как @dystroy упомянутые объявления переменных поднимаются в верхней части области функций. Так как у вас есть var x = 3, var x get поднимается вверх и делает x = 2 локальной переменной. Если вы просто положили x = 3 (без var), то console.log выведет 2 –