检测数据类型
1.typeof()可以检测基本数据类型,但是在检测null时会返回object。另外它不能检测负责的数据类型,如正则表达式对象
2.constructor可以检测绝大部分数据的类型,但是不能检测null和underfined的数据类型
3.toString()方法:检测对象类型时最安全、最准确的。条用toString()方法把对象转换成字符串,然后通过检测字符串是否包含数据所特有的标志字符可以确定对象的类型。但是当重写toString时,也会返回不同的字符串。
4.Object.prototype.toString.call()方法:返回该方法的返回值可以获取对象的准确类型信息。而不受对象类型重写toString()的影响
function typeOf(o){
var _toString=Object.prototype.toString
var _type={
"undefind":"undefind",
"number":"number",
"boolean":"boolean",
"string":"string",
"[object Function]":"function",
"[object RegExp]":"regexp",
"[object Array]":"array",
"[object Date]":"date",
"[object Error]":"Error"
}
return _type[_toString.call(o)]||_type[typeof o]||(o?"object":"null")
}
var a=null
alert(typeOf(a))
数值计算与类型转换
JavaScript能够自动转换数据类型,这种转换是一种隐性转换。它一般遵循:如果某个类型的值被用于需要其他类型的值的环境中,JS将这个值中转换成所需要的类型。例:
数组被用到数值运算中时,数组会根据包含元素来决定转换的值。空数组转换为0,仅包含一个数字元素转换成数字的数值;包含多个数字元素转换成NaN