Здравствуйте, меня зовут Мехзад Галиб, младший веб-разработчик из Бангладеш. Если вы читаете эту статью, я уверен, что вы разработчик JavaScript, который, возможно, не получил свою первую работу разработчика. На собеседовании работодатель должен задать вам вопросы, которые я собираюсь обсудить. Я дам краткие ответы на все вопросы, которые я упоминаю. Итак, приступим к делу:

1. Различие между Null и Undefined
Это популярный вопрос на собеседовании для разработчиков JavaScript. Короче говоря, Null — это несуществующее значение, его можно установить где угодно, прежде чем устанавливать фактическое значение для переменных. Переменной можно присвоить null. С другой стороны, мы можем получить undefined различными способами:

Случай A.Доступ к переменной перед установкой ее значения:

let person;
console.log(person);   // returns undefined

Случай B: если функция явно ничего не возвращает:

function personSalary(salary){
console.log(salary)
}
personSalary(45)   // personSalary() doesn't return anything, so it will return undefined

Случай C: если мы не передаем параметр функции, но все равно вызываем его:

function add(a, b){
return a + b
}
add(54);   // returns undefined because add() needs 2 parameters

Случай D: если мы хотим получить доступ к свойству объекта, которого нет:

const person = {name: 'ahmed', salary: 450};
console.log(person.address)   
// will return undefined because person object has no property as 'address'

Случай E: если мы устанавливаем значение переменной «undefined»:

let people = undefined;
console.log(people)   // returns undefined

Случай F: индексировать значение из массива:

const nums = [45,35,69,74,22]
console.log(nums[11])  
// nums array don't have an 11th index value, so it will return undefined

Вот изображение, которое может завершить эту дискуссию:

2. Что такое значения «Truthy» и «Falsy» в JavaScript:

В JavaScript значения «Truthy» — это в основном значения, которые возвращают логический эквивалент «true», а «ложные» значения возвращают «false». В общем, истинные значения могут быть чем угодно допустимым, например допустимым выражением или рациональной переменной, что означает что-то, с чем мы можем работать. С другой стороны, ложные значения не являются допустимыми выражениями в JavaScript. Ложные выражения в JavaScript: false, undefined, null, 0, NaN и пустая строка (" ").

3. Разница между двойным равным (==) и тройным равным (===)

Двойное равенство (==) — это нестрогий тип равенства в JavaScript, который проверяет только значение обоих концов. Напротив, тройное равенство (===) — это строгий тип равенства, который проверяет как тип, так и значение обоих концов. Пример кода может прояснить ситуацию:

console.log(7 == '7')   
// the above will return true, because both 7 and '7' has the same numeric value
console.log(7 === '7')
// the above will return false, because 7 and '7' is not the same data type, one is number and another is a string.

4. Глобальная область действия и область действия блока:

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

5. Различия между Bind, Call и Apply:

Короче говоря, метод «вызов» и «применить» устанавливает ключевое слово «это» и немедленно вызывает функцию. Но метод bind только создает копию функции и связывает ключевое слово this, мы можем вызывать копию функции в любом месте, где пожелаем.

Но методы call и apply не совсем похожи, у них есть небольшая разница. Метод call требует передачи аргументов по одному в нужную функцию, а метод apply принимает аргументы в виде массива.

Примеры следующие: для метода вызова

const customer1 = {name: 'ahmed', occupation: 'teacher'};

function greetings(msg){
console.log(`${msg} ${this.name}`)
}
greetings.call(customer1, 'hi')
// call method immediately invokes the function, returns 'hi ahmed', takes argument one by one

Для метода применения:

const customer2 = {name: 'jamal', occupation: 'soldier'};
function greetings(msg1, msg2){
console.log(`${msg} ${this.name} ${msg2}`)
}
greetings.apply(customer2, ['Hello', 'How are you?']); // output Hello Jamal, How are you?

Для метода Bind:

let customer3 = { name: 'Natalia', email: '[email protected]' };
function greeting(text) {
   console.log(`${text} ${this.name}`);
}

let helloNat = greeting.bind(customer3);

helloNat('Hello'); // returns 'Hello Natalia' 

6. Понимание ключевого слова «Это»:

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

Само по себе это относится к глобальному окну/объекту.

В функции (нестрогий режим) это также относится к глобальному объекту.

В функции (строгий режим) это возвращает undefined.

В методе класса/функции this относится к объекту-владельцу.

В таких методах, как call и apply, это относится к любому объекту.

В обработке событий это относится к элементу, получившему событие.

7. Какова цель ключевого слова «Новое»:

Ключевое слово «Новый» в основном создает простой и простой объект класса JavaScript. Синтаксис: новый конструктор[([аргументы])]

function Bike(name, year, speed){
this.name = name;
this.year = year;
this.speed = speed;
}
const yamaha = new Bike('Yamaha', 1998, 60)
// a new object of class Bike has been created

8. Различия между ключевыми словами Var, Let, Const:

В более ранней версии JavaScript был только один способ объявить переменную — «var», более короткая форма ключевого слова переменной целиком. Но JavaScript ES6 представляет два новых специальных ключевых слова, которые являются более мощными и информативными.

я. Ключевое слово «let» используется для объявления чего-то, что может быть обновлено позже в рамках функции, цикла или любого условного оператора.

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

III. Ключевое слово «var» также используется для объявления функции, но оно имеет глобальную область видимости и поднимается программой наверх.

9. Что такое шаблонные литералы:

Шаблоны используются для записи некоторых переменных, встроенных в виде строк, и полезны для объявления некоторых динамических значений в шаблоне. Это похоже на строковый метод, но лучше. Шаблоны записываются внутри знаков ``(обратная галочка) слева от клавиши «1».

const name = 'ahmed'
const age = 56;
let statement= `${name} is ${age} years old`; 

10. Оператор распространения JavaScript:

Оператор распространения в основном берет итерируемый элемент (либо массив, либо объект) и расширяет его до списка элементов. Мы можем использовать оператор распространения для использования элементов массива или объекта в другом массиве или объекте, даже в некоторых математических функциях. Основной синтаксис: […массив]

const arr1 = [12,35,356,89,554]
const arr2 = [54,68,59,21]
const combined = [25, ...arr1, 63, ...arr2]
console.log(combined)
// will return [25,12,35,356,89,554,63,54,68,59,21]

Спасибо, что прочитали эту статью, надеюсь, она поможет вам в будущем. Удачи!!!