Почему «true» == true показывает false в JavaScript?

MDC описывает оператор ==следующим образом:

If the two operands are not of the same type, JavaScript converts the operands then applies strict comparison. If either operand is a number or a boolean, the operands are converted to numbers if possible; else if either operand is a string, the other operand is converted to a string if possible.

Имея это в виду, я бы оценил "true" == trueследующим образом:

  1. Они одного типа? Нет
  2. Является ли операнд числом или логическим значением? Да
  3. Можем ли мы преобразовать оба в число? Нет(isNaN(Number("true")) // true)
  4. Является ли любой операнд строкой? Да
  5. Можем ли мы преобразовать другой операнд в строку? Да(String(true) === "true" // true)

Я получил строки "true"и "true", которые должны оцениваться как true, но JavaScript показывает false.

Что я пропустил?

84
задан Isaac 6 July 2012 в 13:58
поделиться