JavaScript类型判断(总结)
1. 使用`typeof`操作符
`typeof`操作符可以返回一个值的类型的字符串表示。例如:
typeof 42; // "number"
typeof "Hello"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object"(这是一个历史遗留问题,实际上null是一个原始值)
typeof {} // "object"
typeof [] // "object"
typeof function() {} // "function"
需要注意的是,`typeof`对于数组、对象以及null的判断结果都是"object",而对于函数的判断结果是"function"。
2.使用`instanceof`操作符
`instanceof`操作符可以判断一个对象是否属于某个特定的类型。例如:
const arr = [];
arr instanceof Array; // trueconst obj = {};
obj instanceof Object; // trueconst func = function() {};
func instanceof Function; // true
需要注意的是,`instanceof`操作符只能用于判断对象的类型,不能用于判断原始值的类型。
3.使用`Object.prototype.toString.call()`方法
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(undefined); // "[object Undefined]"
Object.prototype.toString.call(null); // "[object Null]"
Object.prototype.toString.call({}); // "[object Object]"
Object.prototype.toString.call([]); // "[object Array]"
Object.prototype.toString.call(function() {}); // "[object Function]"
Object.prototype.toString.call() 方法返回的是一个字符串,其中包含了具体的类型信息。
这些方法可以根据不同的需求来选择使用,通常使用`typeof`操作符和`instanceof`操作符就可以满足大部分的类型判断需求。