Определение четности числа в JavaScript: полное руководство

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для выявления нечетности числа в JavaScript обычно применяется оператор остатка от деления (%). Число считается нечетным, если остаток от его деления на 2 равен 1.

JS
Скопировать код
const isOdd = num => num % 2 == 1;

Пример использования этой функции:

JS
Скопировать код
console.log(isOdd(5)); // true
console.log(isOdd(8)); // false
Кинга Идем в IT: пошаговый план для смены профессии

Эффективность и альтернативы

Оператор остатка от деления — это стандартный способ решения такого рода проблем. Однако в JavaScript существует и альтернативный метод с применением побитового оператора И (&). Он может быть более быстрой и не менее надежной альтернативой.

JS
Скопировать код
const isOdd = num => (num & 1) === 1; // "& 1" — проверка на нечетность

Внимательность к деталям

Проверка входных данных – это обязательная часть написания программ на JavaScript. Недостаточно внимательная проверка может привести к непредсказуемым результатам при работе с дробными числами:

JS
Скопировать код
console.log(isOdd(4.5)); // false... но разве 4.5 можно назвать ни четным, ни нечетным!

Для того чтобы корректно обработать такие ситуации, проверьте, действительно ли число является целым:

JS
Скопировать код
const isOdd = num => Number.isInteger(num) && num % 2 !== 0; // Так совершенно точно будет верно

Визуализация

Представьте себе набор чисел, наша задача состоит в том, чтобы отобрать среди них нечетные:

JS
Скопировать код
function isOdd(num) { return num % 2 !== 0; } // "Охранник", выбирающий нужные числа

И вот перед нами процессия цифр:

0️⃣ 1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣ 8️⃣ 9️⃣

Мы должны вручить им "значки нечетности":

[⁉️, 🎫, ⁉️, 🎫, ⁉️, 🎫, ⁉️, 🎫, ⁉️, 🎫]

Числа, получившие значки, и будут нечетными! Вот так наглядно выглядит принцип работы num % 2 !== 0.

Важность производительности

Использование оператора остатка от деления обычно является интуитивно понятным, однако вопросы эффективности изредка становятся объектом обсуждения. Давайте сравним эффективность в реальных условиях:

Остаток от деления против побитовой операции

JS
Скопировать код
function isOddModulus(num) { // Традиционный подход
  return num % 2 !== 0;
}

function isOddBitwise(num) { // Современный подход
  return (num & 1) === 1; 
}

Хотя побитовая операция может оказаться совсем немного быстрее, разница обычно бывает незначительной для большинства задач.

Написание надежного кода

При создании функций важно, чтобы они надежно работали с различными входными данными и обеспечивали стабильную производительность:

JS
Скопировать код
function isOdd(num) {
  if (typeof num !== 'number' || !Number.isInteger(num)) {
    throw new Error('Аргумент должен быть целым числом'); // Выдаем исключение при неправильных данных
  }
  return (num & 1) === 1;
}

Эта функция не только проверяет число на нечетность, но и производит его валидацию.

Полезные материалы

  1. Remainder (%) – JavaScript | MDN — Подробное описание оператора остатка от деления в JavaScript.
  2. typeof – JavaScript | MDN — Оператор, позволяющий определить тип данных, полезен для валидации входных значений.
  3. Number – JavaScript | MDN — Информация о объекте Number в JavaScript.
  4. Type Conversions — Руководство по конвертации типов в JavaScript.
  5. Basic operators, maths — Обзор основных операторов в JavaScript с упором на оператор остатка от деления.
  6. JavaScript Numbers — Учебник по теме чисел и математических операций в JavaScript.