Javascript 为什么是';0';不等于空列表?
如果0(作为数字)等于0(作为字符串),0等于空列表,为什么作为字符串的0不等于空列表(从作为数字的0等于作为字符串的0开始)Javascript 为什么是';0';不等于空列表?,javascript,equals,Javascript,Equals,如果0(作为数字)等于0(作为字符串),0等于空列表,为什么作为字符串的0不等于空列表(从作为数字的0等于作为字符串的0开始) 要了解代码的结果,您需要了解==相等运算符在以下情况下的工作方式: 当两个操作数的类型相同时,返回严格相等比较的结果== 如果一个操作数是数字,另一个是字符串,请将字符串操作数转换为数字 如果任何一个或两个操作数都是非基元,请将非基元操作数转换为基元值 记住上述几点,让我们看看如何处理每个比较: 0==“0” 由于将'0'转换为一个数字,然后执行严格的相等比较,因为
要了解代码的结果,您需要了解
==
相等运算符在以下情况下的工作方式:
- 当两个操作数的类型相同时,返回严格相等比较的结果
==
- 如果一个操作数是数字,另一个是字符串,请将字符串操作数转换为数字
- 如果任何一个或两个操作数都是非基元,请将非基元操作数转换为基元值
0==“0”
由于将'0'
转换为一个数字,然后执行严格的相等比较,因为在将'0'
转换为一个数字后,两个操作数具有相同的类型,因此计算结果为true
0=[]
返回true,因为当==
运算符的任何操作数为非基元时,它将转换为基元值。将空数组转换为基元值时,将生成空字符串。所以在这个转换之后,你有了0=''
。现在一个操作数是数字,另一个是字符串。然后将空字符串转换为一个数字,该数字将导致0
,从而比较0==0
,其计算结果为true
'0'=[]
这返回false,因为空数组被转换为一个空字符串的基元值。当[]
转换为空字符串时,两个操作数的类型('0'=''
)相同,因此执行严格的相等比较,返回false
有关详细信息,请参见JavaScript中的,double equals并不表示严格等于,而tripple equals则表示严格等于。在前一种情况下,转换是根据所涉及的类型进行的,而在后一种情况下,不存在这种可用的转换(导致半相等)。JavaScript就是这样设计的。 在
0=='0'
=
将“0”转换为0,因为右操作数是一个数字
所以它检查0==0,这是真的。
提示使用名为strick equality comparison的==
进行检查,它将0
视为一个数字,将'0'
视为一个字符串
0=[]
在Javascript中,空数组被视为伪数组,而0始终为false,1始终为true
所以==比较false==false
哪个是真的。再次使用严格的等号==
'0'=[]
这里因为[]不是一个数字,所以Javascript不关心将“0”转换为0,这意味着比较是比较字符串和数组,这将不为真。。你有3个箱子
false==false为真
这已经被问了很多次了,肯定是一个纯粹的复制品。@Hi IloveSO是的,我没有看到它。
> 0 == '0'
true
> 0 == []
true
> '0' == []
false