标签:javascript
JavaScript是类型松散的,也就是说,在使用变量和函数参数之前,不会对它们进行比较已确保它们的数据类型正确。
JS有五种基本数据类型:Undefined、Null、Boolean、Number和String,还有一种复杂数据类型Object。
JS是不支持任何创建自定义类型的机制,所有值最终都将是上述6种数据类型之一。
对于上述6种类型的变量,可以利用typeof操作符来检测。
typeof操作符可能返回下列六个字符串:
"undefined"——这个值未定义,对应Undefined类型的变量
"undefined"——这个值是布尔值,对应Boolean类型的变量
"string"——这个值是字符串,对应String类型的变量
"number"——这个值是数值,对应Number类型的变量
"object"——这个值是对象或null,对应Object类型和Null的变量
"function"——这个值是函数。
在检测5种基本类型时,typeof操作符很有用,但是在检测引用类型的值时,这个操作符就用处不大了。因为任何引用类型用typeof检测都返回"object",但其实我们想知道的是它到底是什么类型的对象。
因此,我们检测引用类型时要用instanceof操作符。
JS中的引用类型分为:Object类型、Array类型、Date类型、RegExp类型、Function类型、基本包装类型(Boolean、Number、String)、单体内置类型(Global对象、Math对象)
instanceof操作符返回true或false,其语法如下:
result = variable instanceof constructor。
instanceof操作符在编写类型检测代码时十分有用,例如:
function reverseSort(values){
//只有values参数是Array类型时,才能调用其sort(),reverse()方法,如果不检测的话,传入一个非数组对象就报错了
if(values instanceof Array){
values.sort();
values.reverse();
}
}
总结:大体来说,5种基本类型的值应该使用typeof来检测,而对象(引用类型)的值则应该使用instanceof来检测。
JavaScript中类型检测
标签:javascript
原文地址:http://blog.csdn.net/zhuyunhe/article/details/45438913