一、typeof
typeof
是 JavaScript 中的一个操作符,用于检查一个变量的数据类型。它返回一个表示变量类型的字符串。
基本语法:
typeof operand
示例:
// 1.type of 可判断简单数据类型和函数(null、数组、对象)返回object
// console.log(typeof(1));//返回number
// console.log(typeof("hello"));//返回string
// console.log(typeof(true));//返回boolean
// console.log(typeof function(){});//返回function
// console.log(typeof a);//返回undefined
// console.log(typeof null);//返回object
// console.log(typeof {});//返回object
// console.log(typeof []);//返回object
注意事项:
typeof null
返回"object"
,这是 JavaScript 中的一个历史遗留问题。- 对于数组和对象等复杂数据类型,
typeof
返回"object"
。要区分数组和对象,可以使用Array.isArray()
或Object.prototype.toString.call()
方法。
二、instranceof
instanceof
是 JavaScript 中的一个操作符,用于检查一个对象是否是特定类型(或者是特定类型的子类型)的实例。它用于判断一个对象是否是由一个特定的构造函数创建的。
基本语法:
object instanceof constructor
示例:
let array = [];
array instanceof Array; // 返回 true,因为 array 是一个数组的实例
array instanceof Object; // 返回 true,因为数组也是对象的一种
let person = {};
person instanceof Object; // 返回 true,因为 person 是一个对象的实例
person instanceof Array; // 返回 false,因为 person 不是一个数组的实例
注意事项:
instanceof
主要用于检查对象是否是特定类型的实例,特别是在处理继承关系时常用。需要注意的是,instanceof
只能检查对象的原型链上是否存在指定类型的构造函数,而无法检查对象是否是通过其他方式创建的。
三、Object.prototype.toString.call()
Object.prototype.toString.call()
是一个常用的方法,用于获取变量的具体数据类型。它返回一个表示变量类型的字符串,格式为 [object Type]
,其中 Type
是变量的具体数据类型。
基本语法:
Object.prototype.toString.call(value)
示例:
Object.prototype.toString.call(42); // 返回 "[object Number]"
Object.prototype.toString.call("hello"); // 返回 "[object String]"
Object.prototype.toString.call(true); // 返回 "[object Boolean]"
Object.prototype.toString.call({}); // 返回 "[object Object]"
Object.prototype.toString.call([]); // 返回 "[object Array]"
Object.prototype.toString.call(function(){}); // 返回 "[object Function]"
Object.prototype.toString.call(undefined); // 返回 "[object Undefined]"
Object.prototype.toString.call(null); // 返回 "[object Null]"
注意事项:
Object.prototype.toString.call()
方法可以在大多数情况下准确地确定变量的数据类型,包括基本数据类型和复杂数据类型。它也可以用来区分数组和对象等复杂数据类型。