Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在JavaScript中tab等于false?_Javascript - Fatal编程技术网

为什么在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
是一个布尔值。此处满足的第一个条件是:

  • 如果类型(y)是布尔值,则返回比较结果
    x==ToNumber(y)
  • 把支票换成现金

    '\t' == 0
    
    然后满足以下条件:

  • 如果Type(x)是String,Type(y)是Number,则返回比较结果ToNumber(x)==y
  • ToNumber('\t')==0


    console.log(编号('\t'))1。Javascript使用true和false 2很奇怪。主要是因为一个标签是一个空白,在使用案例中,你通常不会把一个空字符串当作一个有值的词,想象一下有一个输入掩码,然后你可以通过执行
    if(inputstirng){…}
    '\n'==false
    true来检查它是否有值“\t”是一个“emtpy” string@jonathanHeindl小挑剔:Javascript很奇怪。不只是针对布尔人。他们应该在(你的分数是多少?;-)中添加
    '\t'