Модуль 8 · Урок 30
Values, types, variables і conversion
JavaScript type належить value, а binding може посилатися на різні values. const забороняє reassignment binding, але не заморожує Object. Raw string із HTML/CSV/API не стає number через назву змінної — conversion і domain validation є окремими кроками.
Language types і практичний typeof
| Value | typeof | Нотатка |
|---|---|---|
undefined | undefined | Відсутнє присвоєне значення |
null | object | Історична особливість; перевіряйте value===null |
42, NaN | number | NaN теж Number value |
'42' | string | Не number до conversion |
{}, [] | object | Reference semantics |
Bindings і block scope
const rawTotal = '320';
const total = Number(rawTotal);
let pagesRead = 128;
if (!Number.isFinite(total) || total <= 0) {
console.error('Invalid total');
}Використовуйте const, якщо binding не перепризначається; let — коли state справді змінюється. Обидва мають block scope і temporal dead zone до declaration evaluation. var та hoisting details не потрібні для нового коду цього модуля.
Conversion не дорівнює validation
Number('') дає 0, Number('unknown') — NaN, Boolean('false') — true, бо непорожній string truthy. Після conversion перевіряйте domain: finite, positive, integer/range. Number.isNaN не робить coercion, тому безпечніший для exact NaN check.
Практика
Заповніть type-value inventory і conversion cases: prediction до запуску, actual, explanation і domain validity.
Офіційні джерела
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.