Коротка відповідь
juniorОператори присвоєння, порівняння, рядкові, арифметичні та бітові в JavaScript виконують прості трансформації значень: присвоєння (`=`) зберігає правий операнд у змінній, порівняння (`==`, `===`) повертає булеве значення, рядкові (`+`) конкатенують, арифметичні (`+, -, *, /, %`) обчислюють числові результати, а бітові (`&`, `|`, `^`, `~`, `<<`, `>>`, `>>>`) працюють над 32‑битовими представленнями.
Повне пояснення
Що це і навіщо
- Оператори – фундаментальні елементи мови, що дозволяють маніпулювати даними.
- Вони використовуються для присвоєння значень, порівняння умов, обчислення арифметичних виразів, роботи з рядками та бітовими операціями.
Ключові принципи/терміни
=– присвоєння, повертає значення.==– нестрогий порівняння, виконує тип‑коерс.===– строгий порівняння, без коерсу.+– рядкове/арифметичне додавання, залежить від типу операндів.-,*,/,%– арифметичні операції.- Бітові:
&,|,^,~,<<,>>,>>>– працюють з 32‑битовими інтервалами.
Як це працює
- JavaScript спочатку визначає типи операндів, потім застосовує правила коерсування.
- При
+якщо один операнд рядок, інший перетворюється в рядок. - Бітові операції конвертують числа у 32‑битовий signed int.
Практика і реалізація
let a = 5;
a += 3; // a === 8
const eq = (1 == '1'); // true
const strictEq = (1 === '1'); // false
const str = 'Hello' + ' World'; // "Hello World"
const bit = 5 & 3; // 1
Тестування
- Для порівнянь використовуйте
expect(a).toBe(8)у Jest. - Для бітових перевірок
expect(bit).toBe(1).
Особливості в контексті JS Core
- Порівняння
==часто викликає непередбачувані результати через коерсування; рекомендується===. - Бітові операції працюють лише з 32‑битовими числами, тому великі
BigIntне підтримуються.
Оптимізація та edge cases
- Уникайте
==у логічних виразах. - Перевірте типи перед бітовими операціями, щоб уникнути
NaN. - Для великих чисел використовуйте
BigIntі оператори&n,|n.
Часті помилки
- Неочікуване
trueпри==. - Перетворення числа в рядок через
+. - Втрата даних при бітових операціях над числами > 2^31.
- Використання
=замість===у умовах. - Неочікуване
NaNпісля бітових операцій зundefined. - Переповнення при використанні
<<без маски. - Необхідність обгортати
BigIntу бітові операції. - Застосування
===між об’єктами, що повертаєfalseнавіть при однакових значеннях.
Cheatsheet
=– присвоєння==– нестрогий порівняння===– строгий порівняння+– конкатенація/додавання- * / %– арифметика& | ^ ~ << >> >>>– бітові операції