Это похоже на почти более 15 интервью, которые я дал за последние 3 года, и из этого опыта я узнаю некоторые основные общие вопросы (серьезно, слишком базовые 😅), к которым вы должны быть готовы, прежде чем идти на любое интервью JS.
Начнем с каменного века концепций Javascript (объявления переменных) 😜
Q1. Вы работали над ES6?
A1. Да
Q2. Как мы определяем переменные в ES6? 💁♂
A2. Мы используем let and const
keywords для определения переменной.
Q3. Есть ли разница между var
и let
? Если да, объясните 🤔
A3. Да, у let
и var
есть существенные различия.
1. let
имеет область видимости блока, в то время как var
имеет функциональную область видимости в Js.
2. Мы не можем повторно объявить переменную, назначенную с помощью let
, в то время как мы можем с var
, например
3. var
напрямую назначает свою глобальную переменную объекту window
, а let
назначается невидимой декларативной среде, которая работает аналогично глобальной.
Q4. Хорошо, вы упомянули об ограничении охвата. Как это работает с точки зрения let
и var
😏
A4. У нас есть два основных типа области действия
1. Глобальная область действия - в основном, когда мы объявляем что-то из каждого {}
. и каждые function
2. Локальная область действия - когда мы объявляем что-то внутри {}
или внутри function
, эта переменная становится локальной.
а. Функциональная область. Когда мы объявляем переменную внутри функции, эта переменная ограничивает область действия этой функцией. Мы не можем получить к нему доступ вне функции. Пример
б. Область действия блока - когда мы объявляем переменную внутри {}
, область действия этой переменной ограничивается этим блоком. Как в циклах for, if-else и т. Д.
Q5. Скажите мне, что для этого нужно (спрашивают почти в каждом интервью)
for(var count = 0; count< 5; count++){ setTimeout(() => console.log(count)) }
A5. Вывод будет - ›5 (5 раз), пояснение:
Q6. Можете ли вы сделать вывод вышеуказанного вопроса последовательным, например 0,1,2,3,4 вместо 5 (5 раз)?
A6. Конечно, мы можем использовать let
вместо var
, поскольку let - это элемент области видимости блока, и его значение обновляется с каждой итерацией блока цикла for.
We can also get same output by using closure. Also there is a concept of Event loop which is being used in this question. Will get back to these concepts in upcoming blogs.
Бонус - переменные, объявленные с помощью let
, не поднимаются!
Это лишь большинство общих вопросов, с которыми вы можете столкнуться на собеседовании по JS.
Также, пожалуйста, предложите, если что-то, по вашему мнению, не соответствует сути.
Надеюсь, вы найдете это чтение полезным. Спасибо 😄
Удачи и будьте готовы, потому что JS великолепен ❤️