Я думал, что знаю о причудах с ==
и всех странных типах в JavaScript, но сегодня я наткнулся на одну вещь, которая не имеет для меня никакого смысла:
'\t' == false
// => true
Почему это?
По-видимому, '\t'
не является ложным значением, и в сочетании с ||
оно работает так, как ожидается:
'\t' || 42
// => '\t'
С другой стороны, toString
также не вызывается false
, см.:
'\t' == 'false'
// => false
Это привело меня к мысли, что вкладка может быть преобразована в логическое значение, но:
Boolean('\t') == false
// => false
Итак, вопрос: почему это так?