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

Это может помочь вам в вашем следующем интервью

Истинные и ложные ценности

В Javascript в контексте логического значения все значения оцениваются как истина/ложь для сравнения или логической проверки. Значения, возвращающие true, являются истинными, а значения, возвращающие false, — ложными.

Все значения являются истинными, если только они не определены как ложные (т. е. кроме false, 0, -0, 0n, "", null, undefined и NaN).

Некоторые примеры истинных ценностей:

if (true)
if ({})
if ([])
if (42)
if ("0")
if ("false")
if (new Date())
if (-42)
if (12n)
if (3.14)
if (-3.14)
if (Infinity)
if (-Infinity)

Некоторые примеры ложных значений:

if (false)
if (null)
if (undefined)
if (0)
if (-0)
if (0n)
if (NaN)
if ("")

Null Vs Undefined, разные способы получить undefined

И Null, и Undefined являются примитивными значениями, что означает пустое значение.

Разница между null и undefined заключается в том, что вы создаете переменную, но не присваиваете ей значение. Он автоматически помещает переменную-заполнитель undefined.

В то время как Null означает пустое, несуществующее значение, null явно присваивается переменной, указывающей, что это пустое значение.

var x;
console.log(x);
// undefined

var y = null;
console.log(y);
// null

Хотя мы можем установить null явно, мы можем получить undefined разными способами. Вот некоторые примеры:

  • Создание переменной, но не присвоение ей значения.
  • Когда вы регистрируете функцию, которая ничего не возвращает.
  • Когда вы пытаетесь сохранить значение из сетевого запроса, но запрос завершается неудачно.
  • Когда вы пытаетесь запросить неправильные свойства DOM
  • и Т. Д.

Разница между (==) и (===)

(==)/(===) обычно используется в качестве оператора сравнения в JavaScript. Когда мы хотим сравнить некоторые значения друг с другом. Но почему есть два типа равных. Давайте ответим на них сейчас.

const a = 2
const b = "2"
console.log(a == b) //returns true
console.log(a === b) //returns false

В основном, когда мы используем (==) для сравнения чего-либо. Он преобразует их в общий тип данных, а затем сравнивает их. Вот почему, когда мы попытались сравнить число 2 со строкой 2, мы получили истину.

С другой стороны, когда мы используем (===) для сравнения чего-либо. Он не преобразует и не изменяет их тип данных. Он также учитывает тип данных при сравнении. Таким образом, когда мы сравниваем число 2 со строкой 2, мы получаем false, потому что это два разных типа данных.

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

В JavaScript область действия относится к текущему контексту вашего кода, то есть откуда мы можем получить доступ к переменной или блоку кода. Мы можем глобально или локально определить области видимости.

В JavaScript есть два типа области видимости. Они есть:

  1. Глобальный охват
  2. Местный охват

Что такое глобальная область действия и область действия блока?

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

// global scope 
var name = 'Rahat';

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

// Scope A: Global scope out here 
const aFunction = function () {   
     // Scope B: Local scope in here 
   };

Даже фигурные скобки также определяют область действия на уровне блока для переменных, объявленных с помощью let и const.

Что такое замыкание?

Давайте рассмотрим пример. Вы находитесь в ресторане, и в этом ресторане есть 3 стола. Каждый столик заказал одно и то же блюдо одному и тому же официанту! Что сделает официант?

Он пойдет на кухню, возьмет все 3 одинаковых блюда и подаст их на каждый стол. Вот как работают замыкания.
Вот пример:

function makeAdder(x) {
  let initialVal = 10
  return function() {
    return x + initialVal;
  };
}

var addition1 = makeAdder(5);
var addition2 = makeAdder(10);

console.log(addition1());  // 15
console.log(addition2()); // 20

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

Привязать, позвонить и подать заявку в JavaScript

связывать()

Метод bind() создает новую функцию, которая при вызове имеет ключевое слово this, установленное на указанное значение в скобках. Это чрезвычайно мощно, поскольку позволяет явно определить значение ключевого слова this при вызове функции.

вызов(), применить()

Метод call() вызывает функцию с заданным значением this и аргументами, разделенными запятыми, по отдельности.

Метод apply() служит той же цели. Единственное ключевое отличие состоит в том, что метод apply() ожидает массив аргументов, а не запятую, разделяющую их.