Что вернут Boolean(-1) и Boolean(~-1) в JavaScript?

Результат Boolean(-1) и Boolean(-1) в JS Функция Boolean() преобразует переданное значение в логический тип. В JavaScript любое число, кроме 0 и NaN, трактуется как true. -1 — ненулевое число, поэтому Boolean(-1)…

Короткий ответ

Что ответить на собеседовании

Результат Boolean(-1) и Boolean(-1) в JS Функция Boolean() преобразует переданное значение в логический тип. В JavaScript любое число, кроме 0 и NaN, трактуется как true. -1 — ненулевое число, поэтому Boolean(-1) возвращает true. Побитовый оператор NOT () меняет каждый бит числа. Формула операции: ~x = -(x+1). -1 = -(-1 + 1) = -0 = 0. При преобразовании 0 в Boolean получается false. Итак: Boolean(-1) = true, а Boolean(-1) = false. Такой подход применяют для быстрой проверки ненулевых значений и при выполнении битовых операций.

Подробный разбор

Ответ с пояснениями

Результат Boolean(-1) и Boolean(~-1) в JS

  • Функция Boolean() преобразует переданное значение в логический тип.
  • В JavaScript любое число, кроме 0 и NaN, трактуется как true.
  • -1 — ненулевое число, поэтому Boolean(-1) возвращает true.
  • Побитовый оператор NOT (~) меняет каждый бит числа. Формула операции: ~x = -(x+1).
  • ~-1 = -(-1 + 1) = -0 = 0.
  • При преобразовании 0 в Boolean получается false.
  • Итак: Boolean(-1) = true, а Boolean(~-1) = false.
  • Такой подход применяют для быстрой проверки ненулевых значений и при выполнении битовых операций.

Развёрнутый ответ

Основной результат

В JavaScript оператор Boolean() приводит значение к логическому типу. Любое значение, не относящееся к falsy (например, 0, "", null, undefined, NaN, false), преобразуется в true.

Разберём оба выражения по отдельности:

  1. Вызов Boolean(-1) преобразует число -1 в 0, поскольку оно не является true и не относится к falsy-значениям.
  2. В выражении Boolean(~-1) сначала выполняется побитовое NOT ~ для значения -1: - Выражение ~-1 означает побитовое отрицание числа -1. В JavaScript числа при побитовых операциях рассматриваются как 32-битные знаковые значения, поэтому -1 в двоичном представлении состоит из 32 единиц. - Оператор побитового отрицания ~ меняет каждый бит на противоположный. Для -1 результатом будет 0, то есть все биты станут нулевыми. - Поэтому выражение ~-1 даёт значение 0. - Затем Boolean(0) возвращает false, поскольку 0 является falsy-значением.

Результат: Boolean(-1) === true Boolean(~-1) === false

Что важно запомнить

  • В JavaScript любое ненулевое число — как положительное, так и отрицательное — преобразуется в true.
  • Побитовое отрицание ~ инвертирует все биты значения, рассматриваемого как 32-битное знаковое целое: В данном случае ~x === -(x+1).
  • Если используется x = -1, выполняется ~(-1) = 0. Поскольку Boolean(0) === false, результатом становится соответствующее значение.

Практическое применение

Это поведение необходимо учитывать при сочетании побитовых операций с логическими преобразованиями, в том числе в условиях. Выражение ~x нередко применяют, чтобы проверить наличие найденного индекса: ~(-1) === 0 является falsy, а остальные индексы — truthy, например if(~arr.indexOf(value)). Это распространённый идиоматичный приём JavaScript, однако для его корректного понимания важно разбираться в битовой арифметике.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку