js中相等、大小 不同类型之间是如何进行对比的。
2014-11-21 00:40
363 查看
上个小问题
再上个加强版
特殊的对象null:
typeof null => 'object',但由于null是个tongyi特殊的对象,不是由构造函数Object创建而来,所以null instanceof Object => false
假设有null的构造函数 null = new Null();那么null == null(同个对象引用), new Null() != new Null()
综上,[] == [] 为false
上代码先:
所以回归开头的小例子,对比过程如下
[] > [] false [] < [] false [] == [] false // why?
再上个加强版
'6xxx' < '5xx' false '6xxx' > '5xx' true '6xxx' > 5 false// why? '6xxx' < 5 false//why?
1. 相等判断,两个等号
数组是被构造函数Array “new”出来的对象(见:[].constructor),那么“==”判断对象相等,是需要判断他们的引用 所以:
[] == [] //false {} == {} //false var a = function(){ return '';}, b = function(){ return '';}; a == b //false new Number(10) == new Number(10) //false null == null//why? //true
特殊的对象null:
typeof null => 'object',但由于null是个tongyi特殊的对象,不是由构造函数Object创建而来,所以null instanceof Object => false
假设有null的构造函数 null = new Null();那么null == null(同个对象引用), new Null() != new Null()
综上,[] == [] 为false
2. 大小判断
先上代码,再解释true > false/ //true true < false //false [1] > 0 //true [3] > [2] //true [1,3] > 0 //false [1,3] < 0 //false [1,3] > [2,4] //false
过程中有个隐式的转换 布尔值、undefined、null使用Number()转为数值, 如一方为数值,将非数值使用Number()转为数值 双方都非Number,进行toString()后,进行字符串对比大小。
上代码先:
//调用toString转换, var StrObj = { toString : function(){ return '5xx' } }, NumObj = { toString : function(){ return 5 } }; [StrObj > 4,NumObj > 4] //既 ['5xx' > 4,5 > 4] //false,true [StrObj < 6,NumObj < 6] //false,true 'a' < 'b'//没有使用Number或parseInt,不然以NaN进行大小对比,字符串的对比似乎进行charCode对比? //true 'ab' < 'aa'// 第一个字符相等,判断第二个字符 //false 'ab' < 'az' //true '5' < '5'// 以字符串的方式来对比了, //false '5a' < '5b' //true '6xx' > 5 //false '6xx' < 6 //false '5xx' < '6xx' //false '5xx' > '6xx' //false
所以回归开头的小例子,对比过程如下
[] > [] // ([]).toString() > ([]).toString() [] < [] // ([]).toString() < ([]).toString() [] == [] // new Array() == new Array()
'6xxx' < '5xx'// 字符串的对比,6大于5,所以不需要对比后面的了 '6xxx' > '5xx'// '6xxx' > 5// NaN 与 5
相关文章推荐
- Node.js 和 C++ 之间如何进行类型转换?
- 如何:在各种字符串类型之间进行转换
- 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- VC++ 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- javascript不同类型数据之间的运算是如何转换的
- Visual C++ 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- 如何:在各种字符串类型之间进行转换
- 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换
- 如何在C# DateTime类型和JavaScript的Date之间进行转化
- 如何:在各种字符串类型之间进行转换(zz)
- 如何:在各种字符串类型之间进行转换--如何从 char * 转换为上面列出的其他字符串类型
- Visual C++ 如何:在各种字符串类型之间进行转换
- Visual C++ 如何:在各种字符串类型之间进行转换