JS中不同类型的值比较问题

我们比较数据的时候大多是以下两种情况:

3 > 4 ;
"m" > "n" ;

但有时候可能会出现比较符号两侧的数据类型不相同的场景,例如

5 > "a1";
"m">true;
2 < undefined;
"x" > null;

看似复杂,实际上只要知道他们的比较规则就简单了。

当比较的两个值类型不同时,会通过Number()方法将双方转化成数字类型的数值,然后再比较

要注意的是,如果比较双方有一个为NaN(转化后),则结果均为false

现在再研究一下各类型通过Number()的转化情况。

Number(1.5)-->1.5
Number("")-->0
Number("11")-->11
Number("a1")-->NaN
Number("1a")-->NaN
Number(true)-->1
Number(false)-->0
Number(null)-->0
Number(undefined)-->NaN
Number("0x11")-->17

现在遇到不同类型值的比较问题就清晰了,按照上面的列表对号入座进行转换再比较即可

例如:

"test">undefined --> false
false < "" --> false
"1" > false --> true
posted @ 2013-07-12 09:03  TiestoRay  阅读(578)  评论(0编辑  收藏  举报