JS中的值有两种类型:原始类型(Primitive)、对象类型(Object)。
原始类型包括:Undefined、Null、Boolean、Number和String等五种。
对象类型的值:Array Function Object。
js中不同数据类型进行比较(==)时会有自己的抽象比较算法,es5规范中规定如下。
可以总结为一下几条:
- undefined == null,结果是true。且它俩与所有其他值比较的结果都是false。
- String == Boolean,需要两个操作数同时转为Number。
- String/Boolean == Number,需要String/Boolean转为Number。
- Object == Primitive,需要Object转为Primitive(具体通过valueOf和toString方法)。
- NaN == NaN ,false
图示:(图中的N :ja中内置Number方法;P:Primitive【具体通过valueOf和toString方法】)
不同数据类型toString之后的返回值:
参考文献:ecmscript5规范 http://lzw.me/pages/ecmascript/#201