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

Values, types, variables і conversion

JavaScript type належить value, а binding може посилатися на різні values. const забороняє reassignment binding, але не заморожує Object. Raw string із HTML/CSV/API не стає number через назву змінної — conversion і domain validation є окремими кроками.

Primitivesconst / letundefined / nullExplicit conversion

Language types і практичний typeof

ValuetypeofНотатка
undefinedundefinedВідсутнє присвоєне значення
nullobjectІсторична особливість; перевіряйте value===null
42, NaNnumberNaN теж Number value
'42'stringНе number до conversion
{}, []objectReference 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.

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

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

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

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

1. До якого type належить NaN?
2. Що повертає typeof null?
3. Що гарантує const?