说一下JS中的数据类型及其检测方法
时间: 2023-09-14 11:09:16 浏览: 91
在JavaScript中,有七种基本数据类型和一种复杂数据类型。
1. 基本数据类型:
- number:数字类型,包括整数和浮点数
- string:字符串类型
- boolean:布尔类型,true或false
- undefined:未定义类型
- null:空类型
- symbol:符号类型,ES6新增
- bigint:大整数类型,ES10新增
2. 复杂数据类型:
- object:对象类型,包括数组、函数、正则表达式等
检测数据类型的方法:
1. typeof运算符
typeof是JavaScript中的一元运算符,可以返回一个值的数据类型。例如:
```javascript
typeof 123; // "number"
typeof "hello"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object"
typeof Symbol(); // "symbol"
typeof 100n; // "bigint"
```
需要注意的是,typeof null返回的是"object",这是一个历史遗留问题。
2. instanceof运算符
instanceof运算符用于检测一个对象是否属于某个类或构造函数的实例。例如:
```javascript
const arr = [1, 2, 3];
arr instanceof Array; // true
const fn = function() {};
fn instanceof Function; // true
```
需要注意的是,instanceof只能用于检测对象类型,不能检测基本数据类型。
3. Object.prototype.toString方法
Object.prototype.toString方法可以返回一个值的完整数据类型。例如:
```javascript
Object.prototype.toString.call(123); // "[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(Symbol()); // "[object Symbol]"
Object.prototype.toString.call(100n); // "[object BigInt]"
```
需要注意的是,null和undefined没有自己的构造函数,所以通过Object.prototype.toString方法检测它们的类型需要特殊处理。