Рубрики
Без рубрики

Понимание концепции подъема в JavaScript

Подъем в JavaScript, прежде чем я пойду, чтобы объяснить, что такое подъем и как это работает на … С тегом JavaScript, начинающих, WebDev, Codenewbie.

Прежде чем я пойду, чтобы объяснить, что такое подъем и как он работает на двигателе JavaScript, я хотел бы дать определение важного термина в Javscript, называемом Контекст исполнения . Контекст исполнения что -то вроде глобальной обертки, которая содержит и обрабатывает несколько кодов, которые работают на нашем двигателе JavaScript. Контекст исполнения контролирует порядок и путь, по которому коды обрабатываются в ‘ Закулисная часть двигателя ». Когда код запускается в JavaScript , он запускается внутри Контекст исполнения Анкет

Обратите внимание, что контекст выполнения – это абстрактная концепция, которая иллюстрирует среду, в которой запускаются коды, которые вы пишете, и выполняется в вашем двигателе JavaScript.

This execution context works in two phases basically in the javascript engine 
  1. Во -первых, когда код запускается, Контекст исполнения Создается, затем двигатель JavaScript организует и хранит переменные и функции в пространстве памяти.
  2. Во -вторых, он обрабатывает вашу строку кода после строк, чтение и анализ данных на строке.

ПРИМЕЧАНИЕ:

-Первый шаг описывает термин «подъем», но я все равно хотел бы объяснить дальше на этот термин, поэтому я еще не переставал читать. Я хотел бы получить еще кое -что, чтобы вы укрепили свое понимание того, что означает «подъем». -Переменные и функции изначально находятся в памяти (существующей), пока их не будут не призвать, а затем двигатель JavaScript извлекает их. -Ваш код -это не то, что действительно дается компьютеру напрямую, он переводится и преобразуется компилятором в данные, которые компьютерная система может понять и выполнять.

Что кажется НО Не поднимает

Вопреки тому, как это может показаться, подъем не является ответом на JavaScript по умолчанию, который физически перемещает объявления переменных и функций в верхнюю стеку вашего кода для запуска.

Пример 1

Из этого примера можно увидеть, что в коде функция был вызван сверху и переменная выводится сверху, используя Консоль.log Анкет

Глядя на результат в консоли браузера, функция был назван, но переменная это ‘ неопределенное ‘ Почему работала только функция? подъем только работа для функции ? Вы можете спросить. Но дело в том, что подъем На самом деле работает для них обоих, и это сработало! Но это просто не дало то, что вы ожидаете. Причина этого в том, что

Когда ваш код был запущен, Контекст исполнения был создан (эта абстрактная среда, где коды управляются и скомпилированы) в двух этапах; хранение функции и переменные , а затем обработка кода.

функция был сохранен в «целом», что означает, что сама функция ( myfunction ), и строковые данные, которые она хранила (” Функция была названа “) были сохранены в памяти для использования.

И поэтому не имело никакого значения, что это называлось некоторые строки, прежде чем на самом деле добраться до самой функции, потому что на первом этапе Контекст исполнения , это уже существовало в памяти.

Но в случае с переменная , это не та же история. Это потому, что только Декларация из переменная ( var x ) был настроен и сохранен в памяти, Инициализация ( var ) не хранился. Это потому, что по умолчанию JavaScript не знает, наконец, ваш переменная может быть установлен и не хочет делать это выбуждение для вас во время хранения, поэтому он изначально устанавливал данные переменная к неопределенное в памяти. Итак, когда Контекст исполнения был создан на первом этапе, он установил пространство памяти для переменная x и установите значение на специальное ключевое слово ‘ неопределенное ‘И при выполнении на втором этапе, обрабатывая код из верхней строки по строке, он видит, что переменная x Это выводится (распечатано), прежде чем назначить какие -либо данные и поэтому извлекает данные по умолчанию ‘ неопределенное ‘и установить переменная к этому.

ПРИМЕЧАНИЕ:

Все переменные в JavaScript изначально установлены в неопределенное и получит выведен как так, кроме данных переменная был установлен раньше ‘ Консоль.logging «Это в вашем браузере.

Еще одна вещь, которую нужно понять, это то, что существует разница в результатах между объявлением переменная ничего не присваивая ему и не объявляя переменная вообще при попытке вывести его на консоли вашего браузера.

Пример 2

Случай 1: объявление переменной без назначения

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

И, как вы бы вывели из предыдущего объяснения, результаты в консоли браузера были выводится как неопределенное Потому что это не имеет значения, когда код выполняется сверху вниз, если есть значение, назначенное или нет, поскольку начальное значение будет установлено на неопределенное кроме Инициализация был установлен до вывод это (‘ console.logging ‘).

Случай 2: вообще не объявляет

В этом случае переменная не был объявлен, но это выводится из кода. Результаты в браузере такие же, как, таким образом,

Теперь, из консоли браузера, мы получаем ‘ Uncaught reverseError ‘Сообщение говорит x не был определен (объявлен или инициализирован).

ОК, но теперь, в чем разница между словом ‘ Неопределенное «В первом случае и в этом втором случае, когда есть ошибка, показывающая, что переменная x не было определенный . Теперь есть что -то, что вам нужно понять об этих двух результатах.

Неопределенное это тип данных JavaScript, это специальное ключевое слово, которое означает, что переменная не было установлено значение (не было определено, чтобы означать или представлять что -либо), но с другой стороны, результатом в случае 2 является сообщение об ошибке, которое предупреждает вас о том, что переменная, которую вы пытаетесь вывести, не существует в первое место и так не определяется как что -либо в вашем коде.

ВЫВОД:

Подъем это ответ по умолчанию в JavaScript, где ваш функции (включая его данные) и переменные (За исключением его данных) хранятся и используются, их называют независимо от того факта, что они находятся ниже кода, который вы используете, чтобы вызвать их.

В любом случае, это мое личное определение этого и то, что я понимаю, и надеюсь, что вы понимаете это так же.

Хотя, подъем Является ли JavaScript Slick Wayment помочь вам запустить ваш код независимо от того, какой заказ вы пишете, лучше всего не полагаться на него или использовать его в своем коде. Скорее, лучший и безопасный способ написания кода в вашем функции и переменные это объявление и инициализация их до вывод это линия по линии. Это поможет вам избежать ошибок и ошибок в вашем коде.

Я надеюсь, что эта запись о том, что является поднятием, была полезной и эффективной для вашего понимания. Спасибо за чтение и продолжайте улучшаться !!!

Следуй за мной @ Твиттер

Оригинал: “https://dev.to/keemosty/understanding-the-hoisting-concept-in-javascript-42jl”