Ответы на распространенные вопросы по 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 есть два типа области видимости. Они есть:
- Глобальный охват
- Местный охват
Что такое глобальная область действия и область действия блока?
Всякий раз, когда мы начинаем писать проект 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()
ожидает массив аргументов, а не запятую, разделяющую их.