JavaScript documentation насыщает:Переменная JavaScript Подъемный без функций
Еще одна необычная вещь о переменных в JavaScript является то, что вы можете обратиться к переменной, объявленной позже, не получив исключение. Эта концепция называется подъемом; переменные в JavaScript в некотором смысле «подняты» или подняты до вершины функции или оператора. Однако переменные, которые еще не инициализированы, возвращают значение неопределенного.
Сейчас в моем коде (на самом деле это фрагмент кода из W3Schools на ту же тему) я не использую функции:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JavaScript index</title>
</head>
<body>
<p id="demo"></p>
<script>
x = 5; // Assign 5 to x
elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x; // Display x in the element
var x; // Declare x
alert(x);
</script>
</body>
</html>
Результат alert()
5. Почему не undefined
. По моему мнению, линия var x
должна быть поднята вверх, а alert()
должна отображать undefined
.
Я прочитал еще немного об этом от: http://code.tutsplus.com/tutorials/javascript-hoisting-explained--net-15092
Что я не получаю?
«var x следует поднимать вверх» --- и затем инициализируется '5' – zerkms
Что заставляет вас думать, что' alert() 'будет показывать' undefined'? Я не следую вашим рассуждениям. – Pointy
_ «Я назначаю значение переменной - и тогда мне интересно, что позже это значение ...» _ - серьезно? – CBroe