10 интересных и необычных фактов о Javascript

Сегодня я расскажу 10 интересных и необычных фактов о Javascript. Это будет полезно, если вы хотите подготовиться к интервью. Давайте начнем.

Что такое объект Set и как он работает?

Объект Set — это функция ES6, позволяющая хранить уникальные значения, примитивы или ссылки на объекты. Значение в наборе может встречаться только один раз.
Мы можем создать экземпляр «Set» с помощью конструктора «Set» и при желании передать «Iterable» в качестве начального значения.

Пример:

const set1 = new Set();
const set2 = new Set(["a", "b", "c", "d", "d", "e",]);

Мы можем добавить новое значение в экземпляр «Set», используя метод «добавить».

Пример:

set2.добавить («е»);

Мы можем удалить значение из экземпляра «Set», используя метод «delete»,

Пример:

установить.удалить («е»);

Мы можем проверить, существует ли конкретное значение в экземпляре «Set», используя метод «has».

Пример:

set2.has («а»);

Мы можем получить длину экземпляра «Set», используя свойство «size».

Пример:

набор2.размер;

Мы можем удалить или удалить все элементы в экземпляре «Set», используя «clear».

Пример:

установить2.очистить();

Мы можем использовать объект «Set» для удаления повторяющихся элементов в массиве.

Пример:

const num = [1, 2, 3, 3, 5, 6, 6, 7];
const uniqueNum = […new Set(num)]; // имеет значение [1, 2, 3, 5, 6, 7]

Что такое объекты-оболочки?

Примитивные значения, такие как строка, число и логическое значение, за исключением null и undefined, имеют свойства и методы, даже если они не являются объектами.

Пример:

let name= «Ракибул Ислам»;
console.log(typeof name); // «строка»
console.log(name.toUpperCase()); // «Ракибул Ислам»

«имя» — это «примитивная строка», значение, не имеющее свойств и методов, но в этом примере мы вызываем метод «Верхний регистр()», который не выдает ошибку, а возвращает «Ракибул Ислам».

Причина этого в том, что «примитивное значение» временно преобразуется в «объект», поэтому переменная «имя» ведет себя как «объект». Все «примитивы», кроме «null» и «undefined», имеют объекты-оболочки. Объекты-оболочки — это String, Number и Boolean, Symbol и BigInt. В этом случае вызов «name.toUpperCase()» за кулисами выглядит так.

console.log(новая строка(имя).toUpperCase()); // «Ракибул Ислам»

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

Что такое принуждение типа в javascript?

Приведение типа — это процесс преобразования значения из одного типа в другой (например, строки в число, объекта в логическое значение и т. д.).

В чем разница между неявным и явным принуждением?

Неявное Принуждение

Неявное Приведение — это способ преобразования значений в другой тип, при котором программист не делает этого напрямую или вручную.

Пример:

console.log(1 + ‘6’);
console.log(false + true);
console.log(6 * ‘2’);

В нашем первом примере ‘1’ преобразуется в строку, а затем объединяется с помощью оператора ‘+’. В JavaScript он был преобразован автоматически.

Второй оператор console.log регистрирует «1», он преобразует «ложь» в «логическое», что приводит к «0», а «истина» будет «1», следовательно результат "1".

Третий оператор console.log регистрирует «12», он преобразует «2» в «число» перед умножением «6 * 2», следовательно, результат «12».

Явное Принуждение

Явное Приведение – это способ преобразования значений в другой тип, когда мы (программисты) явно делаем это.

Пример:

console.log(1 + parseInt('6'));

В этом примере мы используем функцию parseInt для преобразования «6» в «число», а затем добавляем «1» и «6» с помощью оператора «+».

Как проверить, является ли число четным, без использования оператора % или по модулю?

Для этой задачи мы можем использовать оператор побитовое И «&». "&" оперирует своим операндом и обрабатывает их как двоичные значения и выполняет операцию И.

Пример:

const isEven = (num) =› {
if(num & 1) {
return false;
} else {
return true;
}
}
console.log(isEven(3));

Почему он возвращает false при сравнении двух похожих объектов в JavaScript?

Пример:

let a = {a: 1};
let b= {a: 1};
let c = a;
console.log(a === b); // false
console.log(a === c); // истинный

JavaScript по-разному сравнивает объекты и примитивы. В примитивах они сравниваются по значению, а в объектах сравниваются по ссылке или адресу. в памяти, где хранится переменная. Вот почему первая инструкция console.log возвращает false, а вторая инструкция console.log возвращает true. a и c имеют одинаковую ссылку, а a и b — нет.

Разница между атрибутом и свойством

Атрибут — это реальная вещь, которую мы используем в нашем HTML-теге, например:

‹тип ввода = «флажок» отмечен = «отмечен» /›

В этом примере «type» и «checked» являются атрибутами. Однако свойство представляет собой значение этих атрибутов, которое браузер сохраняет внутри элемента DOM. Часто значения атрибутов и свойств совпадают, вот что так сбивает с толку.

В этом примере элемент DOM «input» имеет свойство «type» со значением «checkbox» и свойство «checked» со значением «true».

Разница между окном и документом

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

Документ тоже под окном. Документ является свойством объекта окна. Документ представляет собой DOM, а DOM — это объектно-ориентированное представление написанной нами HTML-разметки. Все узлы являются частью документа.

Разница между window.onload и document.onload

«window.onload» запускается, когда DOM готов и все содержимое, включая изображения, CSS, скрипты, подфреймы и т. д., загружено. Это означает, что все загружено.
«document.onload» запускается, когда DOM готов, что может быть до загрузки изображений и другого внешнего контента.

Разница между отсрочкой и асинхронностью

нормальный: если у вас есть простой тег скрипта (без ключевого слова defer или async), синтаксический анализатор приостановит синтаксический анализ, скрипт будет загружен и выполнен. После этого парсинг возобновится.

defer: ключевое слово defer в теге скрипта откладывает выполнение скрипта. Следовательно, скрипт будет выполняться, когда доступен DOM. Важным моментом является то, что defer поддерживается не всеми основными браузерами.

асинхронный: если возможно, задайте выполнение скрипта асинхронно. Ключевое слово «async» не влияет на встроенный скрипт.