-
Notifications
You must be signed in to change notification settings - Fork 0
2.3. JS
-
Что такое JavaScript и где он выполняется? JavaScript — это высокоуровневый, интерпретируемый язык программирования с прототипным наследованием. Изначально он был создан для создания интерактивных веб-страниц в браузерах. Сегодня он также широко используется на серверной стороне (Node.js). Это однопоточный язык, который использует асинхронные модели (Event Loop) для выполнения неблокирующих операций ввода-вывода.
-
Как объявить переменную в JavaScript? Для объявления переменных используются ключевые слова
let,constи (устаревший)var.
- В чем разница между
let,constи `var?
-
varимеет функциональную область видимости. Он "всплывает" (hoisting) и инициализируется значениемundefined, поэтому его можно использовать до объявления. Переменную, объявленную черезvar, можно переобъявить. -
letиconstимеют блочную область видимости (внутри {}). Они также всплывают, но находятся в "временной мертвой зоне" (TDZ) до момента объявления, поэтому доступ к ним до строки сlet/constвызовет ошибкуReferenceError.constне позволяет переназначать значение, но если это объект, его свойства можно менять.
- Что такое "поднятие" (
Hoisting)? Это механизм, при котором объявления переменных и функций перемещаются в начало своей области видимости во время фазы компиляции. При этом объявленияvarподнимаются и инициализируются какundefined, а объявления функций поднимаются целиком.letиconstподнимаются, но не инициализируются, попадая во "временную мертвую зону".
-
Что такое "временная мертвая зона" (
Temporal Dead Zone,TDZ)? Это период времени между входом в область видимости и моментом, когда объявление переменной сletилиconstфактически выполняется. Обращение к переменной в этой зоне вызывает ошибкуReferenceError. -
Какие типы данных существуют в JavaScript? В JavaScript есть 7 примитивных типов и 1 ссылочный:
- Примитивные:
string,number,bigint,boolean,null,undefined,symbol. Примитивы неизменяемы. - Ссылочный:
object(массивы, функции, объекты и т.д.)
- В чем разница между
nullиundefined?
-
undefined— значение, которое получает объявленная переменная, но не инициализированная. Также возвращается, если свойство у объекта не существует. -
null— это значение, которое разработчик явно присваивает переменной, чтобы указать на "отсутствие значения". Это объект (тип object).
- В чем разница между
==и===?
-
==(нестрогое равенство) выполняет приведение типов перед сравнением. Например,1 == '1'вернетtrue. -
===(строгое равенство) сравнивает и значение, и тип. Если они не совпадают, возвращаетfalse. Рекомендуется всегда использовать===для предсказуемого поведения.
-
Что такое лексическая область видимости (
Lexical Scope)? Это означает, что область видимости переменных определяется их положением в исходном коде. Вложенные функции имеют доступ к переменным из внешних (родительских) функций. -
Что такое замыкание (
Closure)? Замыкание — это функция, которая "запоминает" свое лексическое окружение, даже если она вызывается вне своей родительской функции. Это позволяет обращаться к переменным внешней функции после её завершения.
Замыкания часто используются для создания приватных переменных и в функциональных фабриках.