diff options
| author | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:51:05 +0100 |
|---|---|---|
| committer | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:51:05 +0100 |
| commit | c058fa0fb22dc40ef0225b21a97578cddd0aaffa (patch) | |
| tree | df20f8b4c724b61cb9c34cdb450a7ac77d690bd0 /files/ru/словарь/поднятие/index.html | |
| parent | 8260a606c143e6b55a467edf017a56bdcd6cba7e (diff) | |
| download | translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.tar.gz translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.tar.bz2 translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.zip | |
unslug ru: move
Diffstat (limited to 'files/ru/словарь/поднятие/index.html')
| -rw-r--r-- | files/ru/словарь/поднятие/index.html | 74 |
1 files changed, 0 insertions, 74 deletions
diff --git a/files/ru/словарь/поднятие/index.html b/files/ru/словарь/поднятие/index.html deleted file mode 100644 index ef0cdfb1be..0000000000 --- a/files/ru/словарь/поднятие/index.html +++ /dev/null @@ -1,74 +0,0 @@ ---- -title: Поднятие -slug: Словарь/Поднятие -translation_of: Glossary/Hoisting ---- -<p>Поднятие (hoisting) — термин, который вы <em>не</em> встретите в документации JavaScript. Поднятие задумывалось как общий способ мышления о том, как контекст исполнения (в частности, фазы создания и исполнения) работает в JavaScript. Однако, hoisting может привести и к недоразумениям. Например, hoisting учит, что объявление переменной или функции физически перемещается в начало вашего кода, хотя в действительности этого не происходит. На самом же деле, объявления переменных и функций попадают в память в процессе фазы компиляции, но остаются в коде на том месте, где вы их объявили.</p> - -<h2 id="Узнаем_больше">Узнаем больше</h2> - -<h3 id="Пример">Пример:</h3> - -<p>Одним из преимуществ помещения в память объявлений функций до выполнения кода то, что можно использовать функцию до ее объявления. Например:</p> - -<pre class="brush: js">function catName(name) { - console.log("Мою кошку зовут " + name); -} - -catName("Тигр"); -/* -Результатом будет вывод строки: "Мою кошку зовут Тигр" -*/ -</pre> - -<p>Предыдущий пример демонстрирует ожидаемый рабочий код. Теперь давайте посмотрим, что происходит, когда мы вызываем функцию в коде до ее объявления:</p> - -<pre class="brush: js">catName("Раиса"); - -function catName(name) { - console.log("Мою кошку зовут " + name); -} -/* -Результатом будет вывод строки: "Мою кошку зовут Раиса" -*/ -</pre> - -<p>Даже если мы вызываем функцию до ее объявления, код работает. Это происходит благодаря тому, как работает контекст выполнения в JavaScript.</p> - -<p> </p> - -<p><code>Hoisting</code> хорошо работает и с другими типами данных и переменными. Переменные могут быть инициализированы и использованы до их объявления. Однако, они не могут быть использованы без инициализации.</p> - -<h3 id="Пример_2">Пример:<br> - </h3> - -<pre>num = 6; -num + 7; -var num; -/* не генерирует ошибку, так как num объявлен */ - -</pre> - -<p>JavaScript "поднимает" только объявление, но не инициализацию. Если вы используете переменную, объявленную и проинициализированную после ее использования, то значение будет <code>undefined</code>. Два примера ниже демонстрируют это поведение.<br> - </p> - -<pre>var x = 1; // Инициализируем x -console.log(x + " " + y); // '1 undefined' -var y = 2; -//код выше и код ниже одинаковые - -var x = 1; // Инициализируем x -var y; // Объявляем y -console.log(x + " " + y); // '1 undefined' -y = 2; // Инициализируем y -</pre> - -<p> </p> - -<h3 id="Technical_reference">Technical reference</h3> - -<ul> - <li><a href="https://www.udemy.com/understand-javascript/">JavaScript: Understanding the Weird Parts</a> - Udemy.com Course</li> - <li><a href="/ru/docs/Web/JavaScript/Reference/Statements/var">var - объявление переменной</a> - MDN</li> - <li><a href="/ru/docs/Web/JavaScript/Reference/Statements/function">Функция</a> - MDN</li> -</ul> |
