js 有哪些数据类型

js有八种数据类型: 数值number(包括整数和浮点数),字符串string,布尔值boolean,未定义undefined,空值null,对象object,符号symbol(ES6添加),大数bigint(ES2020添加)
其中除对象外都是基本数据类型(primitive data type),没有方法,在js中用栈(stack)来存储,对象又被称为引用类型,在js中用堆(heap)来存储。
对象又分为多种 object array function date …
除了 null 和 undefined 之外,所有基本类型都有其对应的包装对象:

Number 为数值基本类型的包装对象。
String 为字符串基本类型的包装对象。
Boolean 为布尔基本类型的包装对象。
Symbol 为字面量基本类型(不支持 new Symbol())的包装对象。
BigInt 为bigint类型(不支持 new BigInt())的包装对象。
一个包装对象的valueOf()方法将会返回它的基本类型值。

如何区分属于哪种数据类型

typeof 运算符: typeof 操作符返回一个字符串,表示未经计算的操作数的类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
typeof 123 // 'number'
typeof Infinity // 'number'
typeof NaN // 'number'
typeof '123' // 'string'
typeof false // 'boolean'
typeof true // 'boolean'
typeof undefined // 'undefined'
typeof null // 'object' 历史原因,判断一个值是否是 null 可以通过恒等 === 来区分
null == undefined // true
typeof {} // 'object'
function f(){}
typeof f // 'function'
typeof [] // 'object'
[] instanceof Array // true
Array.isArray([]) // true
const symbol = Symbol();
typeof symbol // 'symbol'
typeof String // 'function'
typeof 'string' // string
typeof String() // 'string'
typeof new String() // 'object'

实用的返回数据类型的方法

参见写一个方法返回入参类型