typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "undefined."
var a;
var a1='people'.name;
alert("a的类型" + typeof a);//undefined
alert("a1的类型" + typeof a1);//undefined
var b = false;
alert("b的类型" + typeof b);//boolean
var c = 'abc';
alert("c的类型" + typeof c);//string
var d = 2;
var d1 = 2.3;
alert("d的类型" + typeof d);//number
alert("d1的类型" + typeof d1);//number
var e = function () {
};
var e1 = function () {
return 1;
};
alert("e的类型" + typeof e);//function
alert("e1的类型" + typeof e1);//function
var f = null;
var f1= [];f1[f1.length]="张三";
alert("f的类型" + typeof f);//object
alert("f1的类型" + typeof f1);//object
想区别对象、数组 单纯使用 typeof 是不行的,JavaScript中,通过Object.prototype.toString方法,判断某个对象值属于哪种内置类型。
由于 JavaScript 中一切都是对象,任何都不例外,对所有值类型应用 Object.prototype.toString.call() 方法结果如下:
<script type="text/javascript">
console.log(typeof 123)//number
console.log(typeof '123')//string
console.log(typeof true)//boolean
console.log(typeof function(){})//function
console.log(typeof {})//object
console.log(typeof [])//object
console.log(typeof new Date())//object
console.log(typeof null)//object
console.log(typeof undefined)//undefined
console.log(Object.prototype.toString.call(123)) //[object Number]
console.log(Object.prototype.toString.call('123')) //[object String]
console.log(Object.prototype.toString.call(true)) //[object Boolean]
console.log(Object.prototype.toString.call(function(){})) //[object Function]
console.log(Object.prototype.toString.call({})) //[object Object]
console.log(Object.prototype.toString.call([])) //[object Array]
console.log(Object.prototype.toString.call(new Date()) )//[object Date]
console.log(Object.prototype.toString.call(null)) //[object Null]
console.log(Object.prototype.toString.call(undefined)) //[object Undefined]
</script>
判断是否为函数
function isFunction(it) {
return Object.prototype.toString.call(it) === '[object Function]';
}
判断是否为数组:
function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}