JavaScript的数据类型可以分为两大类:原始类型 (Primitive Types) 和 对象类型 (Object Types)。
1. 原始类型 (Primitive Types)
原始类型的值是不可变的,它们直接存储在栈内存中,代表了单个值。JavaScript有七种原始类型:
-
Number: 表示数字,包括整数和浮点数。例如:
10
,3.14
,-5
,Infinity
,NaN
。 需要注意的是,JavaScript中所有数字都以双精度浮点数的形式存储。 -
String: 表示文本数据,用单引号或双引号括起来。例如:
"Hello"
,'World'
,`backticks`
(模板字符串). -
Boolean: 表示逻辑值,只有两个值:
true
和false
。 -
Null: 表示空值或不存在的值,只有一个值:
null
。 -
Undefined: 表示未定义的值,通常用于声明了变量但未赋值的情况。只有一个值:
undefined
。 -
Symbol (ES6新增): 表示独一无二的值,用于创建对象的唯一属性名。例如:
Symbol('mySymbol')
. -
BigInt (ES2020新增): 表示任意精度的整数,可以处理超出Number类型最大安全整数的数值。例如:
1234567890123456789012345678901234567890n
.
2. 对象类型 (Object Types)
对象类型的值是可变的,它们存储在堆内存中,代表了键值对的集合。
-
Object: JavaScript中最基本的對象類型。可以使用对象字面量
{}
或构造函数new Object()
创建。例如:{ name: "John", age: 30 }
. -
Array: 表示有序的值的集合。例如:
[1, 2, 3, "hello"]
. -
Function: 表示可执行的代码块。例如:
function greet() { console.log("Hello"); }
. -
Date: 表示日期和时间。
-
RegExp: 表示正则表达式,用于模式匹配。
-
Error: 表示错误对象。
-
Map (ES6新增): 类似于对象,但是键可以是任何类型。
-
Set (ES6新增): 表示值的集合,不允许重复值。
-
WeakMap (ES6新增): 类似于Map,但是键必须是对象,并且键是弱引用。
-
WeakSet (ES6新增): 类似于Set,但是值必须是对象,并且值是弱引用。
typeof 运算符
可以使用 typeof
运算符来检查变量的数据类型。需要注意的是,typeof null
会返回 "object"
,这是一个历史遗留问题。
总结
理解JavaScript的数据类型对于编写正确的代码至关重要。选择正确的数据类型可以提高代码的效率和可读性。 记住原始类型和对象类型的区别,以及如何使用 typeof
运算符检查数据类型。