在JavaScript中,内置数据类型分为哪几类?请说明各自的特点并比较它们之间的主要差异。
考察说明
考查对JavaScript语言基础数据类型的掌握程度及其核心区别。
回答思路
- 【回答框架 1】JavaScript数据类型分为原始类型和引用类型。原始类型包括Undefined、Null、Boolean、Number、String、Symbol和BigInt;引用类型主要指Object,以及其子类型如Array、Function、Date等。
- 【回答框架 2】核心区别在于存储方式与复制行为。原始类型值直接存储在栈内存中,按值访问和复制;引用类型值存储在堆内存中,栈中保存指向堆内存的地址,按引用访问和复制。
- 【回答框架 3】原始类型不可变,操作时产生新值;引用类型可变,修改属性会影响所有引用该对象的变量。类型判断方面,typeof对原始类型基本可区分,但对Null返回object;引用类型需要用instanceof或Object.prototype.toString区分。
- 【回答框架 4】比较时,原始类型比较值是否相等;引用类型比较引用地址是否相同。字符串、数字等在比较时可能出现隐式转换,需注意相等运算符与全等运算符的区别。
- 【回答框架 5】原始类型中Symbol是唯一且不可变的,BigInt用于表示任意精度整数;包装对象如new Number是引用类型,与字面量原始值在类型判断和比较行为上存在差异。
- 【关键点 1】JavaScript数据类型分为原始类型与引用类型,原始类型共7种,引用类型核心为Object。
- 【关键点 2】原始类型按值存储与复制且不可变,引用类型按引用存储与复制且可变。
- 【关键点 3】typeof用于判断多数原始类型,但null返回object;引用类型判断需instanceof或Object.prototype.toString。
- 【关键点 4】原始类型比较值,引用类型比较引用地址。
- 【关键点 5】Symbol与BigInt分别解决唯一标识与大整数需求。
- 【易错点 1】误将null判断为对象,忽略typeof null返回object的特殊性。
- 【易错点 2】混淆原始类型与包装对象,如'1'与new Number(1)在typeof和比较行为上不同。
- 【易错点 3】使用==比较时忽略隐式类型转换导致意外结果。