MDC описывает оператор ==
следующим образом:
Если два операнда не одного типа, JavaScript преобразует операнды, а затем применяет строгое сравнение. Если любой операнд является числом или логическим, операнды, если это возможно, преобразуются в числа; else, если любой операнд является строкой, другой операнд, если возможно, преобразуется в строку.
Учитывая это, я бы оценил "true" == true
следующим образом:
- Являются ли они одного типа? Нет
- Является ли операндом число или логическое? Да
- Можно ли преобразовать оба числа в число? Нет (
isNaN(Number("true")) // true
) - Является ли либо операндом строка? Да
- Можно ли преобразовать другой операнд в строку? Да (
String(true) === "true" // true
)
Я закончил с строками "true"
и "true"
, которые должны оцениваться как true
, но JavaScript показывает false.
Что я пропустил?