На собеседовании по работе с фронтендом JavaScript может быть немного сложным. Если вы подаете заявку на младшего разработчика, это могут быть простые вопросы о базовой концепции JavaScript, но если вы подаете заявку на старший уровень, это может быть сложно.

Иногда на собеседовании старшего уровня можно было задать общие вопросы. Итак, прежде чем перейти к доске интервью, давайте напомним некоторые из наиболее распространенных и фундаментальных базовых концепций JavaScript.

Что такое Clouser в JavaScript?

Clouser — это сочетание функции и лексического объема вокруг нее. Если мы упростим это, Clouser — это доступность функции для доступа к переменным из ее внешней области видимости. У каждой функции есть Clouser, когда она вызывается.

Если мы объявим функцию внутри функции и попытаемся получить доступ к переменной внутри внутренней функции, даже если внешняя функция будет возвращена, у нас все еще будет доступ к внешней области действия из-за Clouser.

Что такое функциональное программирование?

Функциональное программирование (часто сокращенно FP) — это процесс создания программного обеспечения путем составления чистых функций, избегая общего состояния, изменяемых данных, /strong>и побочные эффекты. Функциональное программирование является декларативным, а не императивным, и состояние приложения передается через чистые функции. В отличие от объектно-ориентированного программирования, где состояние приложения обычно совместно используется и размещается вместе с методами в объектах.

Функциональное программирование — это парадигма программирования, означающая, что это способ мышления о создании программного обеспечения, основанный на некоторых фундаментальных, определяющих принципах (перечисленных выше). Другие примеры парадигм программирования включают объектно-ориентированное программирование и процедурное программирование.

Что такое обещание в JavaScript?

Обещание — это объект, который синхронно возвращается из асинхронной функции, и к нему прикреплена функция обратного вызова, которая имеет два аргумента: один разрешается, а другой отклоняется.

Представьте себе функцию createAudioFileAsync(), которая асинхронно генерирует звуковой файл с заданной конфигурацией и двумя функциями обратного вызова, одна из которых вызывается в случае успешного создания аудиофайла, а другая — в случае возникновения ошибки.

Современные функции, которые возвращают обещание, вместо этого вы можете прикрепить свои обратные вызовы:

Если бы createAudioFileAsync() было переписано так, чтобы возвращать промис, его использование могло бы быть таким простым:

Это сокращение от:

Что означает ключевое слово this в JavaScript?

Ключевое слово this в основном представляет собой объект, который указывает на окно глобального объекта.

Когда мы объявляем переменную в глобальной области видимости, мы можем получить к ней доступ через ключевое слово this.

Кроме того, ключевое слово «это» ведет себя по-разному в зависимости от того, как оно называется? Давайте посмотрим, как поведет себя ключевое слово this в другой ситуации.

Итак, мы видим, что как свойство объекта внутри функции и внутри функции IIFE оно указывает на объект окна или глобальный объект. Давайте посмотрим на другую ситуацию.

В приведенном выше примере внутри метода объекта они указывают объект, даже если другой наследуется от первого. Но когда мы объявляем метод с обычной переменной, он указывает на глобальный объект окна, поскольку он объявлен в глобальном объекте.

Другой вариант использования — когда функция создается с помощью функции-конструктора.

Таким образом, в основном ключевое слово «это» ведет себя по-разному в зависимости от того, как оно называется.

связывайтесь, звоните и оставляйте заявку

Если мы хотим, чтобы объект был значением «этого», как мы могли бы это сделать? Посмотрим-

bind позволяет нам позаимствовать метод и установить значение «this» без вызова функции. Он возвращает точно такую ​​же копию функции с новым значением «this».

Теперь давайте рассмотрим пример, чтобы упростить метод вызова и применения.

Это простая функция для проверки того, передается ли число 2 в качестве аргумента или нет. Аргументы — это локальная переменная, которая находится внутри функции и предоставляет набор всех аргументов, передаваемых функции.

arguments - это не массив, а массивоподобный объект. В функции мы преобразовываем аргументы в массив с помощью метода slice, вызывая его.

оба метода call и apply принимают первый аргумент для «this». вызов принимает набор аргументов в качестве второго параметра, где apply принимает массив аргументов.

Каковы преимущества объектно-ориентированного программирования?

До ООП в мире программирования мы использовали функции с переменной внутри. По сути, это была куча функций, которые хранят данные и выполняют данные. Переменная и функции настолько взаимосвязаны, что усложняют программу.

Для решения этой проблемы появилось объектно-ориентированное программирование. В ООП мы объединяем относительные переменные и функции вместе. В ООП мы можем хранить данные в виде свойств и значений. Итак, в чем преимущество ООП?

Преимущество ООП

  • Инкапсуляция: в ООП мы объединяем относительные переменные и функции вместе в один объект, известный как инкапсуляция. Инкапсуляция помогает нам уменьшить сложность и повысить возможность повторного использования.
  • Абстракция: в ООП абстракция означает скрытие сложной части объекта и делает код более ясным и читабельным. Это уменьшает сложность и в то же время изолирует влияние изменений.
  • Наследование. В ООП наследование помогает нам устранить избыточный код.
  • Полиморфизм: поли означает множество, а морфизм означает форму. Итак, полиморфизм означает множество форм. в основном это помогает нам рефакторить уродливый оператор switch/case.

Каковы преимущества функционального программирования?

Функциональное программирование в основном означает написание кода, который делает что-то (декларирует, что делается), но не указывает конкретно, как это сделать (императив).

Для меня одним из самых больших преимуществ функционального программирования является то, что оно помогает отделить изменяемые переменные от неизменяемых констант.

Используя функциональную парадигму, программисты избегают любого общего состояния или побочных эффектов, что устраняет ошибки, вызванные тем, что несколько функций конкурируют за одни и те же ресурсы.

В чем разница между нормальной функцией и функцией стрелки?

Стрелочная функция представлена ​​впервые с выпуском es6. Это помогает нам написать нашу функцию короче. давайте посмотрим на какой-нибудь пример.

Для стрелочной функции требуется меньше кода строки, чем для обычной функции. В стрелке функция удаляет ключевое слово функции, а после параметра она использует клавишу со стрелкой, которая представляет собой комбинацию знака «равно + больше».

основные отличия: нет отдельного «этого».

В классических функциональных выражениях ключевое слово this связывается с разными значениями в зависимости от контекста, в котором оно вызывается. Однако в случае стрелочных функций this лексически связано. Это означает, что он используетthis из кода, содержащего стрелочную функцию.

В примере ES5 .bind(this) требуется для передачи контекста this в функцию. В противном случае по умолчанию this будет неопределенным.

Стрелочные функции ES6 не могут быть привязаны к ключевому слову this, поэтому они будут лексически подниматься вверх по области и использовать значение this в той области, в которой они были определены.

Что такое пузырь событий в JavaScript?

Прежде чем понять, что такое пузырь событий, мы должны понять, что происходит, когда вызывается событие. Всякий раз, когда что-то нажимается на странице, наш браузер будет знать, что какое-то событие было выполнено.

Сначала он перейдет к объекту окна, затем к объекту документа, затем к корневому тегу HTML и, в конечном итоге, к самому низкому уровню элемента. Это то, что называется захватом.

На самом низком уровне элементов он проверит, где вызывается щелчок, и проверит, связано ли с ним событие или нет. Если он прикреплен, он выполнит событие. Это называется целевой этап.

Затем она начинает подниматься вверх так же, как доходит до самого нижнего уровня. При движении вверх он проверяет каждый элемент, и если к ним привязано какое-либо событие, браузер выполнит или запустит событие. Это называется всплыванием событий.

Я надеюсь, что эта статья поможет вам ускорить подготовку к собеседованию. Путь обучения — это долгое путешествие, а не спринт.

Чем больше вы узнаете, тем лучше ваш код. Удачного кодирования.