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