js中typeof和instanceof区别
时间: 2023-09-07 18:16:05 浏览: 120
在JavaScript中,`typeof`和`instanceof`是用于检测变量类型的两种不同的操作符。
1. `typeof`操作符用于确定一个值的原始类型。它返回一个字符串,表示该值的类型。常见的返回值包括:"undefined"、"boolean"、"number"、"string"、"bigint"、"symbol"、"function"和"object"。
例如:
```javascript
typeof 42; // "number"
typeof "hello"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object"
typeof []; // "object"
typeof {}; // "object"
typeof function() {}; // "function"
```
需要注意的是,`typeof null`返回的是"object",这是历史遗留问题,实际上null是一个表示"无值"的特殊值。
2. `instanceof`操作符用于检查一个对象是否属于某个特定类或构造函数的实例。它返回一个布尔值。
例如:
```javascript
var arr = [];
arr instanceof Array; // true
var obj = {};
obj instanceof Object; // true
function Person() {}
var person = new Person();
person instanceof Person; // true
```
`instanceof`操作符基于原型链进行判断,如果对象的原型链上存在指定类或构造函数的原型,则返回true;否则返回false。
总结:
- `typeof`用于判断基本类型和函数类型,返回字符串表示类型。
- `instanceof`用于判断对象是否属于某个特定类或构造函数的实例,返回布尔值。
阅读全文