Собеседование — неотъемлемая часть разработчика. Это поле для доказательства того, что вы подходите рекрутерам. Они проверяют внутренний взгляд Кандидатов на собеседовании. Чтобы помочь вам на этом поле битвы, здесь я обсудил несколько хитрых концепций JavaScript:

Операторы равенства

В JS есть два способа проверить равенство двух значений.

Оператор равенства (==):
Оператор равенства выполняет приведение типов перед сравнением операндов, что приводит к странным результатам и проблемам с производительностью.

'1'  ==  1         // true
1    == '1'        // true
0    == false      // true
0    == null       // false

Оператор строгого равенства (===):
Оператор строгого равенства сравнивает операнды без какого-либо приведения типов.

3 === 3   // true
3 === '3' // false

неопределенный

undefined — это свойство глобального объекта с начальным значением undefined. В современных браузерах это не настраиваемое и недоступное для записи свойство. Мы можем получить undefined для следующих случаев:

  • доступ к глобальной переменной undefined
  • доступ к объявленной но еще не инициализированной переменной
  • вызов функций без оператора return
  • возвращаться не с чем возвращаться
  • несуществующие свойства объекта
  • параметры функции без какого-либо явного значения

undefined означает, что переменная была объявлена, но значение этой переменной еще не определено.

var name; 
console.log(name);

Ожидаемый результат: undefined

undefined имеет тип undefined

var name; 
console.log(typeof (name));

Ожидаемый результат: undefined

НУЛЕВОЙ

null означает пустое значение. null было выделено и явно ничего не подразумевает.

console.log(null);

Ожидаемый результат: null

null – это объект

console.log(typeof (null));

Ожидаемый результат: object

Подъем

Подъем — это механизм JavaScript, в котором объявления переменных и функций перемещаются в верхнюю часть своей области видимости перед выполнением кода. Это означает, что независимо от того, где объявлены функции и переменные, они перемещаются в начало своей области действия независимо от того, является ли их область действия глобальной или локальной.

a = 5;
console.log(a);  // Error
b = 5;
console.log(b);  // 5
var b;

Объектно-ориентированное программирование

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

  1. Инкапсуляция
  2. Полиморфизм
  3. Наследование

Инкапсуляция:

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

Наследование:

Наследование — это механизм, с помощью которого объект приобретает некоторые/все свойства другого объекта. Он поддерживает концепцию иерархической классификации.

Полиморфизм:

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

Стек вызовов

В JavaScript стек вызовов — это структура данных, которая использует принцип «последним пришел — первым обслужен» (LIFO) для временного хранения и управления вызовом функции (вызовом).

function firstFunction(){
   throw new Error('Stack Trace Error');
}
function secondFunction(){
   firstFunction();
}
function thirdFunction(){
   secondFunction();
}
thirdFunction();
//Stack Trace Error! But it also represents the corresponding call //stack
//    at firstFunction (<anonymous>:2:11)
//    at secondFunction (<anonymous>:5:5)
//    at thirdFunction (<anonymous>:8:5)
//    at <anonymous>:10:1

Функции высшего порядка

В JavaScript функции, которые принимают функции обратного вызова в качестве своих аргументов, называются функциями высшего порядка. Например, map, filter и reduce являются примерами встроенных функций высшего порядка в JS.

const numbers = [1,2,3,4,5];
const total = numbers.reduce((a,b)=>a+b,0);
console.log(total)    // 15

Область действия JavaScript

Область видимости определяет доступность (видимость) переменных. В JavaScript есть два типа области видимости:

  • Локальная область
  • Глобальный охват

Локальные переменные JavaScript

Переменные, объявленные в функции JavaScript, становятся ЛОКАЛЬНЫМИ для этой функции. Локальные переменные имеют область действия функции: к ним можно получить доступ только из функции.

Глобальные переменные JavaScript

Переменная, объявленная вне функции, становится ГЛОБАЛЬНОЙ. Глобальная переменная имеет глобальную область действия. Все сценарии и функции на веб-странице могут получить к ней доступ.

Объявления Let (let)

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

Объявления констант (const)

Вы также можете определить переменные в ES 6 с синтаксисом объявления const. Переменные, объявленные с помощью const, считаются константами, то есть их значения не могут быть изменены после установки.

Закрытие

Закрытие — это просто способность функции во время объявления запоминать ссылки переменных и параметров в своей текущей области, в области своей родительской функции, в области родительской функции до тех пор, пока она не достигнет глобальной области видимости с помощью Scope. Цепь. По сути, это Scope, созданный при объявлении функции.

Удачи!!!