← Назад к вопросам

Какое логическое значение выведет '100' > 100?

2.0 Middle🔥 181 комментариев
#JavaScript Core

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разбор выражения '100' > 100

Правильный ответ на этот вопрос: false.

Чтобы понять, почему это так, необходимо разобрать процесс сравнения в JavaScript, поскольку он зависит от типов данных.

Механизм сравнения в JavaScript

В JavaScript оператор > (больше) выполняет сравнение разных типов данных. Согласно спецификации, когда один из операндов является строкой, а другой — числом, происходит следующее:

  1. Числовое приведение строки: Строковый операнд ('100') пытается быть преобразованным в число (Number('100')).
  2. Сравнение чисел: После приведения оба операнда становятся числами, и выполняется числовое сравнение.

Давайте посмотрим на этот процесс поэтапно в коде:

// 1. Исходное выражение
const result = '100' > 100;

// 2. JavaScript неявно приводит строку к числу:
const numberFromString = Number('100'); // Результат: 100
const implicitComparison = numberFromString > 100; // Результат: 100 > 100

// 3. Итоговое вычисление:
console.log(result); // false, потому что 100 не больше 100
console.log(100 > 100); // false

Почему не true? Подробности алгоритма

  • Строка '100' успешно преобразуется в число 100. Преобразование происходит по правилам функции Number().
  • Сравнение 100 > 100 ложно, так как число 100 не больше самого себя. Оператор > проверяет строгое неравенство.

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

  • 100 > 100false
  • 100 >= 100true

Дополнительные примеры для понимания

Рассмотрим другие сценарии, которые часто вызывают путаницу:

// Пример 1: Успешное числовое преобразование
console.log('150' > 100); // true (150 > 100)
console.log('0050' > 40); // true (50 > 40) - ведущие нули игнорируются

// Пример 2: Сравнение двух строк (происходит лексикографическое сравнение!)
console.log('100' > '99'); // false! Сравниваются символы '1' и '9' по коду Unicode
console.log('9' > '100'); // true! Символ '9' имеет код 57, '1' — код 49

// Пример 3: Неудачное преобразование строки в число
console.log('100abc' > 99); // false
// Number('100abc') возвращает NaN
// Сравнение NaN > 99 всегда false

Ключевые выводы и правила

Из этого разбора можно сформулировать важные правила JavaScript:

  • При сравнении разных типов JavaScript использует абстрактную операцию сравнения ToNumber для нечисловых операндов.
  • Оператор > всегда возвращает логическое значение (true или false).
  • Для предсказуемого кода рекомендуется:
    *   Использовать **явное преобразование типов** перед сравнением.
    *   Или применять **строгое сравнение** (`===`, `!==`), которое не выполняет неявного приведения.

// Явное преобразование — хорошая практика
const explicitResult = Number('100') > 100; // false

// Строгое сравнение не сработает здесь, так как типы разные
const strictResult = '100' > 100; // false (но с приведением типов)
const strictEquality = '100' === 100; // false (без приведения, типы разные)

Итог: Выражение '100' > 100 выполняется как 100 > 100, которое ложно. Понимание механизмов неявного приведения типов (type coercion) является фундаментальным для отладки и написания надежного JavaScript-кода.

Какое логическое значение выведет '100' > 100? | PrepBro