JS数据类型总结
一 数据类型
原始类型:
number,string,boolean,null,underfined
对象类型:
object(function,array,date,...)
二 隐式转换
巧用+/-转换
num - 0 转换为数字
num + "" 转换为字符串
a == b 类型相同,同===;类型不同,尝试类型转换和比较
number == string 转number 1 == "1.0" //true
boolean == ? 转number 1==true //true
object == number | string 尝试对象转为基本类型 new String("Hi") == "Hi" //true
0 == false
null == underfined
new Object() == new Object()
[1,2] == [1,2]
其他情况:false
a === b 先判断类型,类型不同返回false;类型相等,判断数值/字符串/布尔值....
(NaN不等于NaN,new Object() 不等于 new Object())
三 包装对象
当把一个基本类型当做对象类型使用时,如访问length属性,或者添加一些属性,js它会智能的把基本类型转换成对应的一个包装类型对象,相当于new String(),内容和str的值一样,当返回结果之后,临时对象会被销毁(str.t).
var str = "string";
alert(str); //string
str.t = 10;
alert(str.t); //underfined
四 类型检测
typeof(适合函数类型和基本类型的判断,遇到Null失效)
instanceof(适合判断对象类型,自定义对象,也可以用来检测原生对象,在不同iframe和window间检测时失效)
Object.prototype.toString(IE6/7/8 返回[object Object])
constructor,duck type