Глупые вопросы на собеседовании по Javascript
Я не против технических вопросов напрямую. Я думаю, что это один из способов получить некоторое представление о технических навыках кандидата. Я предпочитаю техническую дискуссию строгому техническому интервью. Но позвольте мне объяснить один из худших вопросов о Javascript сегодня и почему.
Прежде чем я начну излагать свою точку зрения, давайте немного углубимся в историю Javascript.
Это был 1995 год , разработан Netscape (Брендан Эйх), позже Mozilla продолжила улучшать и развивать javascript. Идея javascript заключалась в том, чтобы создать некую динамику при просмотре онлайн-мира. Он использовался для некоторых предупреждений или очень простых анимаций. Javascript был разработан, чтобы иметь внешний вид Java, но с ним было проще работать непрограммистам. В то время не было даже AJAX -> Javascript не использовался для запросов и тому подобного.
Примерно в 1997 году Javascript стал частью стандартов ECMA.
В 2005 году у нас был первый официальный выпуск AJAX -> с этого момента началась сегодняшняя веб-разработка. Больше не нужно было обновлять страницу, чтобы иметь возможность перезагрузить данные. Представьте, что вы вдруг смогли создать какое-то веб-приложение. Но вопрос в том, был ли Javascript готов к этому? Ну не совсем. Разработчики быстро привыкли к таким вещам, как IIFEE :
(function() {
// Code that runs in your function
var name = 'John Doe'
}
)()
console.log(name) // error as the name is not defined in this scope
IIFEE был в основном с сегодняшней точки зрения хакерским решением для создания сложного приложения с большим количеством файлов .js . Нам нужно было такое решение, потому что в противном случае у нас был бы конфликт в именовании переменных , функций и т. д ., поскольку Javascript был строго функциональным языком без классов.
VAR и Hoisting -> Hoisting — это перемещение объявлений наверх. А в javascript переменная может использоваться до ее объявления. Это допустимый сценарий:
myVariable = ‘is this shit possible?’
var myVariable;
console.log(myVariable); // is this shit possible?
В этом примере переменная myVariable была перемещена вверх и одновременно инициализирована, поэтому в строке 3 переменная уже хранит строку.
И таких вещей и проблем было намного больше. Не забывайте о странных частях javascript, которые вы можете найти здесь:https://hackernoon.com/the-weird-parts-of-javascript-zxo34i8
Но что-то изменилось с Javascript с версии es6
Если мы вернемся к нашему примеру с подъемом с новым подходом:
myVariable = ‘is this shit possible?’
let myVariable;
console.log(myVariable); // undefined
Javascript по-прежнему размещает объявление переменной вверху, но не инициализацию. Так что наша консоль будет писать неопределенную переменную вместо строки.
Кроме того, с версией es6 у нас есть:
- Стрелочные функции
- Классы
- Модули
- Обещания
- Генераторы
- let и const объявления для переменных
- Операторы распространения и отдыха
- Литералы шаблонов
- Разрушение
- И многое другое
Какие тогда неправильные вопросы интервью?
Необходимо было показать хотя бы некоторые из этих примеров, прежде чем я мог начать излагать свою точку зрения.
Представьте, что вы новый разработчик и начинаете изучать Javascript. Вам действительно не обязательно понимать:
- Вар
- IIFEE
- Закрытия
- Обещания и их использование (но полезно знать об этом)
Но совершенно не обязательно проверять знание старой версии Javascript. Старый Javascript был создан для другой цели, чем он используется сегодня.

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































