我以为自己对于JavaScript中的==
和各种奇怪的类型转换很了解,但今天我发现了一件让我完全无法理解的事情:
'\t' == false
// => true
为什么会这样呢?
显然,'\t'
不是假值,如果与 ||
结合使用,它将按预期工作:
'\t' || 42
// => '\t'
另一方面,
false
不会调用 toString
方法,如下所示:'\t' == 'false'
// => false
这让我想到可能会将tab转换为布尔值,但是:
Boolean('\t') == false
// => false
所以,问题是:为什么会这样?
if(inputstirng){...}
来检查它是否有值。'\n' == false
也是真的。 - GrafiCode