При запуске следующего кода я ожидал, что предупреждение в конце функции будет использовать глобально определенное значение переменной для «a» (1), но вместо этого оно не будет определено. Если код в блоке if никогда не запускается, почему переменная «a» возвращается как неопределенная?Глобальная переменная undefined - проблема с областью
var a = 1;
four();
function four() {
if (false) {
var a = 4;
}
alert(a); //alerts undefined
}
ли Javascript анализатор «видеть» объявление переменной в пределах сферы действия условного выражения таким же образом, что это будет «видеть» его за пределами этого?
Я думаю, что здесь происходит, что а в определении функции в настоящее время поднимается к верхней части функции, так что вы сообщаете является неопределенным «а» в пределах определение функции, так как это не присваивается, если выполняется оператор if. – Brodie
@Brodie: Это не имеет ничего общего с функцией подъема. – SLaks
@SLaks, что пыталось сказать, заключалось в том, что поскольку a назначается как переменная функции 'four', перед тем, как ее запускают, она не определена внутри области действия функции. - Извините, если моя терминология отключена. – Brodie