Javascript 为什么检查三个字符串之间的相等性不起作用,但检查三个数字之间的相等性起作用?

Javascript 为什么检查三个字符串之间的相等性不起作用,但检查三个数字之间的相等性起作用?,javascript,compare,equality,Javascript,Compare,Equality,我已经在javascript中检查了三个数字之间的相等性,它是有效的。比如: 1 == 1 == 1 //true 2 == 3 == 4 //false 2 == 3 == 3 //false 但当我在三个字符串之间尝试此检查时,它不起作用: 'some string' == 'some string' == 'some string' //false 'a' == 'a' == 'a' //false 有人知道为什么会这样吗? 提前谢谢。因为 'some string' == 'some

我已经在javascript中检查了三个数字之间的相等性,它是有效的。比如:

1 == 1 == 1 //true
2 == 3 == 4 //false
2 == 3 == 3 //false
但当我在三个字符串之间尝试此检查时,它不起作用:

'some string' == 'some string' == 'some string' //false
'a' == 'a' == 'a' //false
有人知道为什么会这样吗? 提前谢谢。

因为

'some string' == 'some string' == 'some string'
按从左到右的顺序计算==运算符。相当于

('some string' == 'some string') == 'some string'
那是

true == 'some string'
这是错误的,因为当一个布尔值与其他值进行比较时,根据:

如果Typex是布尔值,则返回比较结果!ToNumberx==y。 当右边是字符串时,解析为

1 == 'some string'
然后运行

如果Typex是Number,Typey是String,则返回比较结果x==!托尼。 但编号为“somestring”的是NaN

console.logNumber'some string' 因为

'some string' == 'some string' == 'some string'
按从左到右的顺序计算==运算符。相当于

('some string' == 'some string') == 'some string'
那是

true == 'some string'
这是错误的,因为当一个布尔值与其他值进行比较时,根据:

如果Typex是布尔值,则返回比较结果!ToNumberx==y。 当右边是字符串时,解析为

1 == 'some string'
然后运行

如果Typex是Number,Typey是String,则返回比较结果x==!托尼。 但编号为“somestring”的是NaN


console.logNumber'some string' 1==1==1可以解释为1==1 true==1,这是真的。
但是'a'='a'='a'将被解释为'a'='a'true=='a',这将是false。as true不等于'a'。

1==1==1可以解释为1==1 true==1,这是真的。
但是'a'='a'='a'将被解释为'a'='a'true=='a',这将是false。as true不等于“a”。

如下:1==1==1->1==true->1==1->truex==x为真或假。。。因此,第三件事最好是真实的或虚假的。因此,永远不要在javascript中使用==@乔治-除非appropriate@Bravo:这是,永远不会;像这样:1==1==1->1==true->1==1->truex==x是真还是假。。。因此,第三件事最好是真实的或虚假的。因此,永远不要在javascript中使用==@乔治-除非appropriate@Bravo:这是,永远不会;