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» не влияет на встроенный скрипт.