Пошук уроків, статей та іншого контенту
Оператори +, -, *, /, %, порівняння == проти ===, && || ?? та скорочене обчислення.
Оператори — це «дієслова» мови: вони беруть одне чи два значення й обчислюють нове. Без них програма могла б лише зберігати дані (модуль «Змінні та типи даних»), але не могла б їх порівнювати чи комбінувати — а саме порівняння й комбінування лежать в основі будь-якого розгалуження логіки, яке ми розглянемо детальніше в наступних уроках цього модуля.
10 + 3; // 13
10 - 3; // 7
10 * 3; // 30
10 / 3; // 3.3333333333333335
10 % 3; // 1 — залишок від ділення
2 ** 10; // 1024 — піднесення до степеняОператор + для рядків працює як конкатенація, а не додавання: "5" + 3 поверне рядок "53", а не число 8. Це найпоширеніше джерело помилок для новачків.
JavaScript має два оператори рівності: == (нестроге, з приведенням типів) і === (строге, без приведення). Правило за замовчуванням: завжди використовуйте ===.
0 == "0"; // true — рядок приводиться до числа
0 === "0"; // false — різні типи
null == undefined; // true
null === undefined; // false
NaN === NaN; // false! NaN не дорівнює навіть сам собіЩоб перевірити значення на NaN, використовуйте Number.isNaN(value), а не value === NaN — останнє завжди поверне false.
&& і || в JavaScript не завжди повертають true/false — вони повертають одне зі своїх операндів (скорочене обчислення, short-circuit evaluation):
const name = userInput || "Гість"; // якщо userInput falsy — беремо "Гість"
console.log("a" && "b"); // "b" — && повертає останній обчислений операнд|| спрацьовує на будь-яке falsy-значення (0, порожній рядок, false), що не завжди бажано. ?? реагує лише на null та undefined:
const count = 0;
console.log(count || 10); // 10 — 0 вважається falsy, це майже завжди БАГ
console.log(count ?? 10); // 0 — правильно, 0 це валідне значенняВикористання == замість === і неочікуване приведення типів.
Використання || для значень за замовчуванням там, де 0 або порожній рядок — валідні значення (треба ??).
Забування, що додавання рядка й числа конкатенує, а не додає.
Арифметичні оператори (+, -, *, /, %, **) обчислюють числа, окрім + для рядків, де він конкатенує. === (строге порівняння) — типовий вибір за замовчуванням, == майже завжди краще уникати через неявне приведення типів. && і || повертають операнд, а не завжди true/false; ?? — точніший за || вибір для значень за замовчуванням, коли 0 чи порожній рядок можуть бути валідними даними. Ці оператори — будівельні блоки для умовних конструкцій із наступного уроку.
Спробуйте самостійно
Напишіть вираз, який поверне "Гість" лише якщо змінна username дорівнює null або undefined, але поверне порожній рядок "" як є, якщо саме таке значення передали.