Модуль 8 · Урок 31

Expressions, operators, equality і truthiness

Operator повертає value, а precedence визначає grouping — не обов’язково повний evaluation order. Production expression має читатися без головоломки: explicit conversion, strict equality, parentheses для intent і правильний default operator для domain.

Precedence=== / !==Truthy / falsy?? vs ||

Grouping і arithmetic

const percent = Math.round((pagesRead / pagesTotal) * 100);
const isComplete = pagesRead >= pagesTotal;
const sameTypeAndValue = pagesRead === 128;

Parentheses фіксують intent. Arithmetic може виконувати numeric coercion, а + також concatenation, тому raw values конвертують раніше. Division by zero не кидає exception — результат Infinity або NaN треба валідувати.

Strict equality і references

=== не конвертує різні types: 0 === '0' false. NaN не дорівнює навіть собі, тож використовуйте Number.isNaN. Два окремі Objects з однаковим content не strict-equal; equality перевіряє identity reference.

Falsy, short-circuit і defaults

ExpressionMeaning
a && bЯкщо a falsy — повернути a; інакше b
a || bЯкщо a truthy — a; інакше b
a ?? bЯкщо a null/undefined — b; інакше a

Falsy: false, 0, -0, 0n, empty string, null, undefined, NaN. Якщо 0/false/empty string валідні, || помилково замінить їх; ?? збереже.

Expression trace

Для кожного case запишіть grouping, short-circuit point, predicted/actual value і coercion. Не виконуйте код до prediction.

Офіційні джерела

Практична перевірка · урок 31 з 60

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Навіщо parentheses у складному expression?
2. Чому + із raw string небезпечний?
3. Що повертає 0 === "0"?