Контекст исполнения в JavaScript

RedDeveloper
26.04.2023 13:57
Контекст исполнения в JavaScript

Привет всем, на этот раз я расскажу о контексте выполнения в javascript.

В других языках программирования, таких как golang, c++ или других, когда мы вызываем переменную до того, как она объявлена, возникает ошибка. Но в javascript это приведет к неопределенности, это происходит из-за контекста выполнения. обратите внимание на следующий фрагмент кода:

console.info(name)

var name = 'AlfaRiza'

Если имя переменной вызывается первым до ее объявления, она будет неопределена.

Определение

Контекст выполнения определяется как среда, в которой интерпретатор выполняет код javascript.

Контекст выполнения имеет две фазы: фазу создания и фазу выполнения.

Мы можем увидеть визуализацию процесса контекста выполнения на javascript https://pythontutor.com/javascript.html

фаза создания

Что происходит во время фазы создания:

  • Javascript создаст глобальный объект, подобно окну в веб-браузере.
  • Javascript создаст объект `this`, который будет ссылаться на глобальный объект.
  • Создайте кучу памяти для хранения переменных и функций.
  • Сохраняет объявления функций в куче памяти и переменные в глобальном контексте выполнения с начальным значением undefined.

фаза выполнения

На этапе выполнения javascript выполняет код построчно (синхронно), присваивает значения переменным и выполняет функции.

Каждый раз, когда вы запускаете функцию, javascript создает контекст выполнения функции или локальный контекст выполнения.

подъем

Hoisting в переводе на индонезийский означает "подъем", потому что при запуске javascript считывает код и ищет ключевые слова var и function, затем помещает var и function наверх.

Например

var number = 10

function is_even(number) {
  return number % 10 === 0 ? 'Genap' : 'Ganjil'
}

var hasil = is_even(number)

console.info(hasil)

На этапе создания javascript сохранит переменную number, переменную result как неопределенную, а объявление функции is_even без выполнения.

Затем на этапе выполнения javascript выполнит код сверху вниз. Начиная с переменной number, заполненной значением 10, затем заполняя переменную result вызовом функции is_even с возвратом 'Even'. Когда функция is_even будет выполнена, она создаст локальный контекст выполнения. Затем последняя переменная результата console.info, содержащая 'Even'.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2023-2024 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий их языку и культуре.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.