Привет! Добро пожаловать в первый пост из серии Unboxing JS.

В этой серии мы собираемся изучить различные сложные концепции Javascript и вместе разобраться в них.

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

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

Если вы изучаете Javascript, не стесняйтесь делиться своим опытом обучения! Я хотел бы выслушать их и вдохновиться ими. Поскольку я обычно не пишу, я был бы очень признателен, если бы вы оставили свой отзыв в разделе комментариев, чтобы я мог учиться и совершенствоваться.

Хватит вступления, иди, возьми свой кофе и иди в сарай!

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

Парсер и компилятор

Прежде всего, давайте выясним, что происходит, когда мы запускаем веб-страницу в нашем браузере. Каждый раз, когда мы загружаем наш файл в браузер, программа, называемая синтаксическим анализатором, будет читать наш код, проверять нашу «грамматику» и проверять правильность нашего кода. Только представьте, что кто-то там корректирует ваше эссе, помогает вам проверить грамматику и выявить орфографические ошибки, но в нашем случае это наш код.

После этого другая программа, называемая компилятором, переводит наш код на язык, понятный и усваиваемый машиной. Это потому, что JavaScript - это интерпретируемый язык, а не компилируемый язык, в отличие от его брата, Java. Этот процесс компиляции называется JIT (Just-In-Time) compilation или динамический перевод.

Далее следует жаргон сообщения: лексическая среда и контекст выполнения.

Лексическая среда

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

function myFunction () {

var myVar = 1; // myVar лексически находится внутри myFunction

}

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

Чтобы еще больше запутать ситуацию, функция может быть вложена в другую функцию, что означает, что одна «среда» находится внутри другой «среды» и… Капов!

Возможно, мы можем думать об этом так: Соединенные Штаты (среда) включают много разных штатов - Огайо, Вашингтон, Техас и т. Д. (Другие среды - в среде). Надеюсь, это поможет вам немного лучше понять.

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

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

Короче говоря, это среда, в которой оценивается текущий код. Помните, что в любой момент времени может быть только один контекст выполнения! Это потому, что Javascript является однопоточным.

Есть несколько типов контекста выполнения - глобальный контекст выполнения и функциональный контекст выполнения, но, к сожалению, мы не будем их сейчас рассматривать.

В следующем посте мы специально рассмотрим глобальный контекст выполнения и выясним, что именно происходит в Javascript Engine до того, как наш код будет выполнен.

Это все на сегодня! Не стесняйтесь оставлять комментарий. :)