Я понимаю, что все переменные подняты, но присваивания не являются (не забывайте о функциях для этого вопроса - это имеет смысл для меня - related SO).Каково значение переменной подъема?
Но я не вижу, как это влияет на код. Я написал сценарий для экспериментов.
В чем преимущество, если вы поднимите переменную и присвоите ей значение неопределенного, которое, по-видимому, имеет место.
var a = 1;
function foo (proxy){
print(proxy);
}
function print(out){
document.getElementById("out").innerHTML = out;
}
// foo("you")
print(d); // undefined
var d = 4;
print(d); // 4
https://jsfiddle.net/6ue7052k/1/
Удалите 'var' перед' d', и первый вызов печати выдает исключение. –
Почему этот вопрос был вновь открыт? Это явный дубликат [Почему переменные hoist для JavaScript?] (Http://stackoverflow.com/questions/15005098/why-does-javascript-hoist-variables) –
@squint Это, похоже, действительно не было полным дубликатом мне. Почему он поднимает их, это другой вопрос, как он влияет на код. – Paulpro