Проверяет понимание неявного приведения типов и поведения при передаче строк в числовые параметры функции в языках с динамической типизацией.
Когда функция ожидает числовые параметры, а вы передаете строки, поведение зависит от системы типов языка. В динамически типизированных языках (JavaScript, Python) преобразование происходит автоматически, но может привести к неожиданным результатам. В статически типизированных языках (Java, C++) компилятор или среда выполнения предотвратят такое использование.
JavaScript не проверяет типы аргументов. При арифметических операциях строки преобразуются в числа. Если строка содержит только цифры, преобразование успешно; иначе получаем NaN.
function add(a, b) {
return a + b;
}
console.log(add('5', '3')); // 53 (конкатенация, так как + для строк)
console.log(add('5' * 1, '3' * 1)); // 8 (умножение принуждает к числам)
console.log(add('abc', 2)); // NaNОператор + перегружен: для строк выполняет конкатенацию. Для числовых операций используйте Number() или унарный плюс.
В Java передача строки в метод с параметром int вызовет ошибку компиляции. В C++ аналогично, если не использовать явное преобразование.
// Java
int add(int a, int b) { return a + b; }
add("5", "3"); // Ошибка компиляции
// C++
int add(int a, int b) { return a + b; }
add("5", "3"); // Ошибка компиляцииВ Python, несмотря на динамическую типизацию, сложение строки и числа вызовет TypeError, но если оба аргумента строки, они конкатенируются.
В динамических языках всегда проверяйте типы входных данных или используйте явное преобразование. В статических языках компилятор защищает от таких ошибок, но при работе с внешними данными (например, из форм) требуется ручное преобразование.
Понимание поведения при передаче строк в числовые параметры критично для написания надежного кода. В динамических языках используйте явные проверки и преобразования, в статических — полагайтесь на систему типов, но не забывайте о преобразовании входных данных из внешних источников.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию