Skip to content

2.3. JS

MJ-learning edited this page Aug 5, 2026 · 1 revision

Основы и Области Видимости (Scope & Hoisting):

  1. Что такое JavaScript и где он выполняется? JavaScript — это высокоуровневый, интерпретируемый язык программирования с прототипным наследованием. Изначально он был создан для создания интерактивных веб-страниц в браузерах. Сегодня он также широко используется на серверной стороне (Node.js). Это однопоточный язык, который использует асинхронные модели (Event Loop) для выполнения неблокирующих операций ввода-вывода.

  2. Как объявить переменную в JavaScript? Для объявления переменных используются ключевые слова let, const и (устаревший) var.

image
  1. В чем разница между let, const и `var?
  • var имеет функциональную область видимости. Он "всплывает" (hoisting) и инициализируется значением undefined, поэтому его можно использовать до объявления. Переменную, объявленную через var, можно переобъявить.
  • let и const имеют блочную область видимости (внутри {}). Они также всплывают, но находятся в "временной мертвой зоне" (TDZ) до момента объявления, поэтому доступ к ним до строки с let/const вызовет ошибку ReferenceError. const не позволяет переназначать значение, но если это объект, его свойства можно менять.
  1. Что такое "поднятие" (Hoisting)? Это механизм, при котором объявления переменных и функций перемещаются в начало своей области видимости во время фазы компиляции. При этом объявления var поднимаются и инициализируются как undefined, а объявления функций поднимаются целиком. let и const поднимаются, но не инициализируются, попадая во "временную мертвую зону".
image
  1. Что такое "временная мертвая зона" (Temporal Dead Zone, TDZ)? Это период времени между входом в область видимости и моментом, когда объявление переменной с let или const фактически выполняется. Обращение к переменной в этой зоне вызывает ошибку ReferenceError.

  2. Какие типы данных существуют в JavaScript? В JavaScript есть 7 примитивных типов и 1 ссылочный:

  • Примитивные: string, number, bigint, boolean, null, undefined, symbol. Примитивы неизменяемы.
  • Ссылочный: object (массивы, функции, объекты и т.д.)
  1. В чем разница между null и undefined?
  • undefined — значение, которое получает объявленная переменная, но не инициализированная. Также возвращается, если свойство у объекта не существует.
  • null — это значение, которое разработчик явно присваивает переменной, чтобы указать на "отсутствие значения". Это объект (тип object).
  1. В чем разница между == и ===?
  • == (нестрогое равенство) выполняет приведение типов перед сравнением. Например, 1 == '1' вернет true.
  • === (строгое равенство) сравнивает и значение, и тип. Если они не совпадают, возвращает false. Рекомендуется всегда использовать === для предсказуемого поведения.
  1. Что такое лексическая область видимости (Lexical Scope)? Это означает, что область видимости переменных определяется их положением в исходном коде. Вложенные функции имеют доступ к переменным из внешних (родительских) функций.

  2. Что такое замыкание (Closure)? Замыкание — это функция, которая "запоминает" свое лексическое окружение, даже если она вызывается вне своей родительской функции. Это позволяет обращаться к переменным внешней функции после её завершения.

image

Замыкания часто используются для создания приватных переменных и в функциональных фабриках.

Функции и this:

Clone this wiki locally