Javascript сегодня является одним из самых популярных языков программирования. Вы можете знать Javascript через такие фреймворки, как jQuery или React. Но в этом блоге я пишу об основах, которые люди, создавшие jQuery и React, использовали для создания таких фреймворков. Это помогло мне стать лучшим программистом.

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

Эти основы Javascript помогли мне понять, что происходит под капотом и как работает код с момента создания файла Javascript.

Синтаксический анализатор. Программа, которая читает ваш код и определяет, что он делает и верна ли грамматика. Такие как — компиляторы, которые проверяют соответствие вашего кода и преобразовывают его в понимание компьютера или программиста, который его написал. Ваш код является переводом кода, в который он был встроен.

Лексическая среда: где что-то физически находится в коде, который вы пишете. Проверяет, где вы видите написанное и как оно взаимодействует с другими элементами программы.

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

Первый этап: этап создания.

Второй этап: этап выполнения кода.

Базовый контекст выполнения (глобальный):доступен везде: он создает глобальный объект и «этот» объект. Глобально: «Не внутри функции»

Всякий раз, когда код запускается в JS внутри контекста выполнения. Оболочка, которую движок javascript анализирует, проверяет ваш код в контексте исключения.

this: объект окна, созданный движком JS, который является окном, в котором вы находитесь.

Поднятие.Большинство определений подъема в Интернете неверны, например, «Поднятие — это перемещение всего кода в верхнюю часть js-файла».

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

let myVar,
console.log(myVar)
myVar = 'Hello'

Это напечатает undefined на нашей консоли. Который был поднят, потому что myVar находится в памяти движка, но еще не назначена.

Однако если мы вообще не объявим переменную myVar, то получим ошибку:

console.log(myVar)
Uncaught ReferenceError: myVar is not defined?

Тем не менее, Подъем просто великолепен, когда речь идет о функциях.

a()
function a(){
    console.log('Hello World!')
}
'Hello World!'

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

Не определено. Специальное значение означает, что переменная находится в памяти, но еще не назначена.

Однопоточный:одна команда во время выполнения.

Синхронный:одна команда во время выполнения по порядку. Который JS.

Асинхронный. Чтобы понять асинхронный, мы должны понимать очереди событий и стек выполнения.

Очередь событий Браузер синхронно переходит в очередь событий после запуска всех стеков выполнения, таких как запросы onClick или HTTP.

Вызов функции и стек выполнения:

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

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

- Построчно на синхронном уровне.

Цепочка области действия. Область действия — это место, где переменная доступна в вашем коде.

ОБЪЕКТЫ — это набор пар "имя-значение".

Пара "имя-значение":имя, которое соответствует уникальному значению.

{Адрес: «Главная улица, 100»}

Я надеюсь, что это поможет для будущих интервью!