Специализация
Python Backend Developer
Java Backend Developer
Node.js Backend Developer
Golang Backend Developer
React Frontend Developer
Выберите навыки
React
JavaScript
Git
Redux
Webpack
Сложность
1-3
4-6
7-8
9-10
Рейтинг вопросов
1
2
3
4
5
Подпишись на React Developer в телеграм
Объяснить разницу между var, let и const в JavaScript?
var имеет функциональную область видимости, поддерживает поднятие и может быть переназначен. let имеет блочную область видимости и также может быть переназначен. const тоже имеет блочную область видимости, но его значение нельзя переназначить.
Расскажите об области видимости переменных?
Область видимости переменной определяет, где в коде эта переменная доступна. В JavaScript существуют глобальная область видимости, блочная область видимости и область видимости функции. Переменные, объявленные с var, имеют функциональную область видимости, а let и const — блочную область видимости, что означает, что они доступны только внутри блока, в котором были объявлены.
Что такое temporal dead zone (временная мёртвая зона) в JavaScript и как она влияет на переменные?
Temporal dead zone (TDZ) — это период времени от начала области видимости переменной, объявленной с помощью let или const, до момента её инициализации. В TDZ переменные недоступны и попытка к ним обратиться вызовет ошибку. Это помогает избежать непредсказуемого поведения при работе с переменными.
Почему можно изменять содержимое объекта, объявленного через const?
Ключевое слово const запрещает переопределять ссылку на объект, но не запрещает менять его внутреннее содержимое.
Если объект объявлен через const, вы не можете присвоить ему другой объект, но можете изменять его свойства.
Это связано с тем, что const работает на уровне ссылки, а не на уровне структуры данных.
Поэтому добавление, изменение или удаление свойств объекта разрешено.
Что произойдёт при обращении к переменной до объявления через let или const?
При обращении к переменной, объявленной через let или const, до её объявления произойдёт ошибка ReferenceError. Переменная существует, но недоступна до момента инициализации. Это поведение защищает код от неявных ошибок. Такое ограничение делает код более предсказуемым.
Как hoisting работает для var, let и const
Почему при использовании let и const возникает ReferenceError
Почему переменные, объявленные через let или const в глобальной области, не становятся свойствами window?
Что произойдет при попытке изменить const?
Рейтинг:
5
Сложность:
8
Hoisting — это когда объявления “обрабатываются” до выполнения кода. У var объявление поднимается и переменная сразу инициализируется как undefined, поэтому к ней можно обратиться до строки объявления (получишь undefined). У let и const тоже есть поднятие объявления, но до фактической инициализации переменная находится в TDZ (temporal dead zone), и доступ к ней до объявления вызывает ReferenceError. const дополнительно требует инициализацию сразу при объявлении.
Рейтинг:
5
Сложность:
7
let и const поднимаются (hoisting есть), но не инициализируются сразу. До строки объявления переменная находится в TDZ, и любое обращение к ней приводит к ReferenceError. Это сделано намеренно, чтобы избежать скрытых багов, когда код читает переменную до ее логического объявления. В отличие от var, где до объявления возвращается undefined, let/const сразу сигнализируют об ошибке.
Рейтинг:
4
Сложность:
6
Переменные var в глобальной области становятся свойствами window, а let и const — нет. Это связано с тем, что let и const создаются в глобальном лексическом окружении, а не как свойства объекта. Они доступны в глобальной области видимости, но не через window. Это сделано для более безопасной и предсказуемой работы со scope.
Рейтинг:
4
Сложность:
2
Рейтинг:
2
Сложность:
2
Рейтинг:
3
Сложность:
4
Рейтинг:
2
Сложность:
7
Рейтинг:
5
Сложность:
3
Рейтинг:
5
Сложность:
5