Последние учебники веб-разработки
×

JS Руководство

JS ГЛАВНАЯ JS Введение JS Куда JS Вывод JS Синтаксис JS Заявления JS Комментарии JS переменные JS операторы JS арифметика JS присваивание JS Типы данных JS функции JS Объекты JS Объем JS Мероприятия JS Строки JS Методы струнных JS чисел JS Методы Number JS математический JS Даты JS Форматы даты JS Методы Дата JS Массивы JS Методы массивов JS Booleans JS Сравнения JS условия JS переключатель JS петля For JS В то время как Loop JS Ломать JS Тип преобразования JS RegExp JS ошибки JS отладка JS Подъемно JS Строгий режим JS Гид по стилю JS Лучшие практики JS Ошибки JS Представление JS Зарезервированные слова JS JSON

JS формы

Формы проверки Формы API

JS объект

Определения объектов Свойства объекта Методы объекта Прототипы объектов

JS функции

Определения функций Функциональные параметры Функция Призвание Функция Затворы

JS HTML DOM

DOM вступление DOM методы DOM Документ DOM элементы DOM HTML DOM CSS DOM Анимации DOM Мероприятия DOM EventListener DOM навигация DOM Вершины DOM Nodelist

JS браузер BOM

JS Window JS Screen JS Location JS History JS Navigator JS Popup Alert JS Timing JS Cookies

JS Примеры

JS Примеры JS HTML DOM JS HTML вход JS HTML Объекты JS HTML Мероприятия JS браузер JS викторина JS Резюме

JS Рекомендации

JavaScript Объекты HTML DOM Объекты


 

JavaScript Hoisting


Hoisting это поведение в JavaScript по умолчанию движущихся деклараций к вершине.


JavaScript декларации водрузили

В JavaScript переменная может быть объявлена ​​после того, как она была использована.

Другими словами; переменная может быть использована до того, как было объявлено.

Пример 1 дает тот же результат , что в примере 2:

Пример 1

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
Попробуй сам "

Пример 2

var x; // Declare x
x = 5; // Assign 5 to x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;                     // Display x in the element
Попробуй сам "

Чтобы понять это, вы должны понимать термин "hoisting" .

Hoisting это поведение в JavaScript по умолчанию перемещения всех деклараций к началу текущей области (в верхней части текущего сценария или текущей функции).


JavaScript инициализация не являются водрузили

JavaScript только тали декларации, а не инициализаций.

Пример 1 не дает такой же результат , как в примере 2:

Пример 1

var x = 5; // Initialize x
var y = 7; // Initialize y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y
Попробуй сам "

Пример 2

var x = 5; // Initialize x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

var y = 7; // Initialize y
Попробуй сам "

Имеет ли смысл, что у не определено в последнем примере?

Это потому, что только декларация (вар у), а не инициализации (= 7) поднимается к вершине.

Из - за hoisting , у объявлена до ее использования, а потому , что не инициализацию водрузили, значение у не определено.

Пример 2 такой же, как написание:

пример

var x = 5; // Initialize x
var y;     // Declare y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

y = 7;    // Assign 7 to y
Попробуй сам "

Объявите переменные На вершине!

Hoisting является (для многих разработчиков) неизвестной или упускать из виду поведение JavaScript.

Если разработчик не понимает hoisting , программы могут содержать ошибки (ошибки).

Чтобы избежать ошибок, всегда объявлять все переменные в начале каждого объема.

Поскольку это, как JavaScript интерпретирует код, это всегда хорошее правило.

JavaScript в строгом режиме не позволяет переменные, которые будут использоваться, если они не объявлены.
Исследование "use strict" в следующей главе.