console.log(typeof 'abc') // string console.log(typeof '') // string console.log(typeof 123) // number console.log(typeof 0.123) // number console.log(typeof true) // boolean console.log(typeof {}) // object console.log(typeof []) // object console.log(typeof null) // object console.log(typeof Undefined) // undefined console.log(typeof function(){}) // function
由此可见 typeof 无法区别数组、对象、null类型,因此需要用以下方法来判断:
console.log(Object.prototype.toString.apply({})) // [object Object] console.log(Object.prototype.toString.apply([])) // [object Array] console.log(Object.prototype.toString.apply(null)) // [object Null] // 或者用 underscore.js 库提供的方法(本质就是对上述方法的封装) _.isObject({}) // true _.isArray([]) // true _.isNull(null) // true