typeof和instanceof都用于类型检查
区别:typeof返回的是字符串,而instanceof返回的是布尔值
javascript
console.log(typeof 42); // "number"
console.log(typeof "Hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof Symbol("symbol")); // "symbol"
console.log(typeof {}); // "object"
console.log(typeof function() {}); // "function"
javascript
function Person(name) {
this.name = name;
}
const person = new Person("Alice");
console.log(person instanceof Person); // true
const obj = {};
console.log(obj instanceof Object); // true
const arr = [];
console.log(arr instanceof Array); // true
typeof操作符用于确定变量或表达式的数据类型。它返回一个字符串,表示传入值的数据类型。常见的返回值包括:"number"、"string"、"boolean"、"undefined"、"symbol"、"object"和"function"。
注意:instanceof操作符只能检测对象的原型链,而不能检测基本数据类型
javascript
let a = 1;
console.log(typeof a) //number
console.log(a instanceof Number) //false
以上,typeof适用于基本数据类型和函数类型,而instanceof适用于对象实例的检查
特殊注意:typeof null返回"object",这是JavaScript中的一个历史遗留问题