Вопрос проверяет понимание неявного преобразования логических значений к числам в JavaScript, что важно для корректной работы с математическими операциями и условными выражениями.
В JavaScript, как и во многих языках, существует механизм неявного преобразования типов (type coercion). Когда логическое значение (boolean) участвует в операции, где ожидается число, оно автоматически конвертируется. Это фундаментальное правило языка.
Преобразование строго определено:
true преобразуется в число 1.false преобразуется в число 0.Такое преобразование часто встречается в следующих сценариях:
Math.max(true, false) вернет 1.==) может происходить преобразование к числу.++ и -- также вызывают преобразование.Рассмотрим несколько практических примеров:
// Арифметические операции
console.log(true + 5); // 6 (true -> 1, 1 + 5 = 6)
console.log(false * 10); // 0 (false -> 0, 0 * 10 = 0)
// Использование в функциях
console.log(Math.abs(false)); // 0
console.log(Number(true)); // 1 (явное преобразование)
// Сравнения
console.log(true == 1); // true (нестрогое сравнение, true -> 1)
console.log(false == 0); // true (false -> 0)
// Инкремент
let flag = true;
flag++; // flag теперь 2 (true -> 1, затем инкремент до 2)
console.log(flag);Стоит помнить о двух ключевых моментах:
+) может работать и как конкатенатор строк. Если один из операндов — строка, boolean преобразуется в строку ('true' или 'false'), а не в число.Number() или унарный плюс (+true).// Случай со строкой
console.log(true + '5'); // 'true5' (конкатенация, а не сложение)
// Явное преобразование
console.log(Number(false)); // 0
console.log(+true); // 1Вывод: Преобразование boolean к числам (true -> 1, false -> 0) — это базовое правило JavaScript, которое активно используется в арифметических операциях и сравнениях. Понимание этого механизма критически важно для написания корректного кода, особенно при работе со смешанными типами данных. Для избежания неожиданностей в сложных выражениях рекомендуется использовать явное преобразование.