Проверяет понимание неявного приведения типов в JavaScript при передаче строк в не типизированные параметры функции.
В JavaScript параметры функций не имеют явных типов. Если передать строку туда, где ожидается число, интерпретатор не выдаст ошибку, а попытается выполнить операцию с учётом фактических типов. Оператор сложения + ведёт себя по-особенному: если хотя бы один операнд является строкой, он выполняет конкатенацию, а не математическое сложение.
При выполнении a + b JavaScript сначала проверяет, есть ли среди операндов строка. Если да, оба значения преобразуются в строки (через String()) и склеиваются. Если строк нет, оба преобразуются в числа (через Number()) и складываются. Это правило описано в спецификации ECMAScript и часто становится источником неожиданных ошибок.
function sum(a, b) {
return a + b;
}
console.log(sum(2, 3)); // 5 (числа)
console.log(sum(2, '3')); // '23' (конкатенация)
console.log(sum('2', 3)); // '23' (конкатенация)
console.log(sum('2', '3')); // '23' (конкатенация)Как видно, достаточно одной строки, чтобы операция превратилась в склейку. Это особенно опасно при работе с пользовательским вводом, который часто приходит в виде строк.
Number(a) + Number(b).typeof a === 'number'.+a + +b.Неявное приведение типов — мощный, но опасный механизм. В реальных проектах всегда проверяйте типы входных данных или используйте инструменты статического анализа, чтобы избежать неожиданной конкатенации вместо сложения.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию