""==0,这个表达式竟然返回 true,百思不得其解呀?
首先,二者不是同一个类型,一个是字符型,一个是数值型,所以js为了比较,会自动转成同一个类型来比较。
但是无论转成字符型,还是数字型,都没有相等的可能呀。
比如全转成字符型
则"" == "0"
空字符“”不可能等于“0”字符呀。
如果都转成数字型也不成立呀,为何会相等呢?
首先,二者不是同一个类型,一个是字符型,一个是数值型,所以js为了比较,会自动转成同一个类型来比较。
但是无论转成字符型,还是数字型,都没有相等的可能呀。
比如全转成字符型
则"" == "0"
空字符“”不可能等于“0”字符呀。
如果都转成数字型也不成立呀,为何会相等呢?
alert(0==false);
可以试一试
alert(1=="1");
alert(2=="2");//都是true要正确的比较,要用===,这个不带类型转换,既类型和值都一致才返回true
alert(1==="1");
alert(2==="2");//都是false
表达式""==0 解释为 假值等于假值 自然返回为true
alert(""==0)//true
在firefox下的效果
javascript:alert(Number(""));
返回的是0,
看来空串可以强制转成数字,就是0.
表达式""==0 解释为 假值等于假值 自然返回为true
应该是这个说法
==这个比较符有强制类型转换
可以试一试
alert(1=="1");
alert(2=="2");//都是true
----------------------------------
那这个怎么解释啊?
所以,最保险的比较方法是用 === 而不是 ==