JavaScript – это язык, используемый для разработки интерактивных и масштабируемых веб-страниц. Как вы думаете, достаточно ли этого определения, чтобы понять силу javascript? Нет, совсем нет.

Поверьте мне, JavaScript — один из самых мощных языков на планете из-за его производительности и масштабируемости.

Вы когда-нибудь задумывались о том, как JavaSript работает в нашем браузере?

Давайте сегодня погрузимся глубже, и поверьте мне, вы не пожалеете!

Посмотрите на эту мини-программу, написанную на js —

JavaScript — это синхронный однопоточныйязык. Синхронный однопоточный означает, что javascript выполняет одну команду за раз и в определенном порядке и переходит к следующей строке после завершения выполнения текущей строки.

Всякий раз, когда мы запускаем программы javaScript за кулисами, движок javascript создает контекст выполнения. Теперь, что такое контекст выполнения? Предположим, что контекст выполнения подобен блоку, состоящему из двух фаз:

Теперь поймите шаги выполнения, помня о приведенном выше коде: -

1 . Этап создания памяти

  • На этапе создания памяти этап память выделяется для всех переменных и функций программы. Он присваивает специальное значение «undefined» всем выделенным переменным, а функциям присваивает фактический код функции.

2. Этап выполнения кода

  • Теперь программа переходит к фазе выполнения кода и снова выполняется со строки 1. Из строки 1 фактическое значение «x», равное «4», будет присвоено «x». Теперь после этого выполнение переходит на строку 2, а со строки 2 на строку 7 делать нечего, потому что она содержит функцию, а, как мы знаем, функция начинает выполняться с вызова функции (вызова функции).
  • Выполнение переходит к следующей строке, которая является строкой 8, и в этой строке у нас есть вызов нашей функции. Функция похожа на небольшую программу, которая имеет свои переменные и логику. Когда JavaScript выполняет функцию, он создает новый контекст выполнения в разделе выполнение кода глобального контекста образования. Подождите… Запутались? Подождите... Смотрите...

  • Таким образом, создается совершенно новый контекст выполнения, но единственное отличие состоит в том, что на этот раз он находится внутри фазы выполнения кода глобального контекста выполнения. Теперь этот вновь созданный контекст выполнения пройдет через этап создания памяти и этап выполнения кода, но только для переменных и логики, которые находятся внутри функции.
  • Этап создания памяти для локального контекста выполнения: на этом этапе память выделяется для всех переменных, функций и аргументов функций, находящихся внутри им присваивается функция,испециальное значение 'undefined'. Помните, что все эти шаги выполняются только в контексте функции «добавить».
  • Контекст выполнения кода для локального контекста выполнения. На этом этапе JavaScript выполняет каждую строку функции 'add'. У нас x=4, и x проходит через вызов функции, поэтому значение num(аргумент) равно 4.
  • Выполнение переходит к строке 4. В этой строке будет выполнено вычисление num+num (поскольку теперь JS Know num = 4), а результат вычисления будет сохранен в переменной 'ans'. 'undefined' переменной 'ans' заменяется результатом 'num+num' (4+4 = 8) в фаза памяти локального контекста выполнения.
  • Выполнение перемещается в строку 5, это ключевое слово «return» сообщает функции, что вы закончили свою работу, теперь просто верните элемент управления и «что-то» обратно в глобальную контекст выполнения. Здесь ‘something’ — это ‘ans’, в котором хранится результат вычисления.
  • Таким образом, элемент управления вернется к строке 8, откуда был создан локальный контекст выполнения. Переменной add1 присвоено значение, возвращаемое функцией add.
  • Как только вся функция будет выполнена и элемент управления вернется в предыдущее состояние, локальный контекст выполнения будет удален. Таким образом, после возврата результата функции не будет никакого локального контекста выполнения.
  • Тот же набор шагов будет выполняться для строки 9, а возвращаемое значение будет присвоено переменной add2.

Последний, но тем не менее важный:

  • Javascript использует стек для управления созданием контекста выполнения или удалением контекста выполнения, это также известно как стек вызовов. >. В нижней части стека всегда находится «Глобальный контекст выполнения», и всякий раз, когда создается новый локальный контекст выполнения, он помещается в стек, а при удалении выталкивается из него. куча.

~ Вишал

Предоставлено и предоставлено: Акшай Сайни и различные статьи в Интернете.