JavaScript中有七种数据类型,分为两大类:基本数据类型和引用数据类型。
-
基本数据类型:
- String(字符串): 用于表示文本数据。
- Number(数字): 用于表示数值,包括整数和浮点数。
- Boolean(布尔): 用于表示逻辑值,即
true
或false
。 - Undefined(未定义): 表示变量已声明但尚未赋值。
- Null(空值): 表示变量没有值,通常是程序员主动赋予的。
- Symbol(符号)(ES6引入): 用于创建唯一的标识符。
- BigInt(大整数)(ES11引入): 用于表示大整数,解决了JavaScript数字精度限制的问题。
-
引用数据类型:
- Object(对象): 用于表示复杂数据结构,可以包含多个属性和方法。
- Array(数组): 用于表示有序集合的数据结构。
- Function(函数): 用于表示可执行的代码块。
- Date(日期): 用于表示日期和时间。
- RegExp(正则表达式): 用于进行文本匹配和搜索。
- Map 和 Set(ES6引入): 用于处理键值对集合和唯一值集合。
判断数据类型的方式有多种,下面是常见的几种方法:
-
typeof 操作符:
typeof
可以用来检测一个值的数据类型。它返回一个表示数据类型的字符串。typeof 42; // "number" typeof "Hello"; // "string" typeof true; // "boolean" typeof undefined; // "undefined" typeof null; // "object" (注意:null返回"object",这是一个历史悠久的bug) typeof {} // "object" typeof [] // "object"
-
instanceof 操作符:
instanceof
用于检测对象的构造函数。它可以用来判断对象是否是特定类型的实例。const arr = []; console.log(arr instanceof Array); // true
-
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]"
-
Array.isArray()(仅用于判断数组类型):检查一个值是否是数组。
Array.isArray([]); // true Array.isArray({}); // false
-
直接
===
当数据类型是undefined null 等基本数据类型时,可以用===
来进行判断
总结
这些方法可以根据具体的需要来选择,typeof
适合基本数据类型的检测,instanceof
适合对象的构造函数检测,Object.prototype.toString.call()
是通用的方法。