Оператор ==
действительно забавен. Он обычно не ведет себятак, как предполагается.
Это привело меня к исследованию того, что именно происходит под верхушкой айсберга, и согласно MDNэто выглядит следующим образом:
Если два операнда не одного типа, JavaScript преобразует в операнды затем применяет строгое сравнение. Если любой из операндов является числом или логическое значение, операнды по возможности преобразуются в числа; еще если один из операндов является строкой, другой операнд преобразуется в строка, если это возможно. Если оба операнда являются объектами, то JavaScript сравнивает внутренние ссылки, которые равны, когда операнды ссылаются на один и тот же объект в памяти.
Итак, почему "undefined" == undefined
не оценивается как true?
Не следует ли undefined
преобразовать в "undefined"
, а затем вернуть true в соответствии с этим описанием?