为什么在JavaScript中tab等于false?
我原以为我知道为什么在JavaScript中tab等于false?,javascript,Javascript,我原以为我知道==的怪癖以及JavaScript中所有奇怪的类型转换,但今天我偶然发现了一件对我来说毫无意义的事情: '\t' == false // => true 为什么呢 显然,'\t'不是一个虚假的值,如果与| |结合使用,则它可以作为例外: '\t' || 42 // => '\t' 另一方面,在false上也不会调用toString,请参见: '\t' == 'false' // => false 这让我想到选项卡可能会转换为布尔值,但是: Boolean('
==
的怪癖以及JavaScript中所有奇怪的类型转换,但今天我偶然发现了一件对我来说毫无意义的事情:
'\t' == false
// => true
为什么呢
显然,'\t'
不是一个虚假的值,如果与| |
结合使用,则它可以作为例外:
'\t' || 42
// => '\t'
另一方面,在false
上也不会调用toString
,请参见:
'\t' == 'false'
// => false
这让我想到选项卡可能会转换为布尔值,但是:
Boolean('\t') == false
// => false
所以,问题是:为什么会这样?参见:
比较x==y
,其中x和y是值,生成true或false。这样的比较如下所示:
因此,在您的情况下,x
是一个字符串,y
是一个布尔值。此处满足的第一个条件是:
x==ToNumber(y)
'\t' == 0
然后满足以下条件:
ToNumber('\t')==0
:
console.log(编号('\t'))代码>1。Javascript使用true和false 2很奇怪。主要是因为一个标签是一个空白,在使用案例中,你通常不会把一个空字符串当作一个有值的词,想象一下有一个输入掩码,然后你可以通过执行if(inputstirng){…}
'\n'==false
true来检查它是否有值“\t”是一个“emtpy” string@jonathanHeindl小挑剔:Javascript很奇怪。不只是针对布尔人。他们应该在(你的分数是多少?;-)中添加'\t'
)