js实现类型
JavaScript 类型系统
JavaScript 是一种动态类型语言,变量类型在运行时确定。主要数据类型分为原始类型和对象类型两大类。
原始类型(Primitive Types)
-
Number
表示整数和浮点数,遵循 IEEE 754 标准。let num = 42; let float = 3.14; -
String
表示文本数据,可用单引号、双引号或模板字符串定义。let str = "Hello"; let template = `Value: ${num}`; -
Boolean
逻辑值true或false。let isTrue = true; -
Null
表示空值,通常用于显式清空变量。let empty = null; -
Undefined
表示未赋值的变量默认值。let unassigned; -
Symbol (ES6+)
唯一且不可变的值,通常用于对象属性键。let sym = Symbol('id'); -
BigInt (ES2020+)
表示任意精度的整数。let bigNum = 9007199254740991n;
对象类型(Object Types)
-
Object
键值对的集合,可通过字面量或构造函数创建。let obj = { key: "value" }; let constructed = new Object(); -
Array
有序列表,可通过索引访问。let arr = [1, 2, 3]; -
Function
可执行对象,支持闭包。function greet() { return "Hello"; } -
Date
日期和时间操作。let now = new Date(); -
RegExp
正则表达式。let regex = /ab+c/;
类型检测方法
-
typeof 操作符
返回类型字符串,但对null和数组的检测有局限。typeof 42; // "number" typeof []; // "object" -
instanceof 操作符
检测对象是否为特定构造函数的实例。[] instanceof Array; // true -
Object.prototype.toString
精确判断对象类型。Object.prototype.toString.call([]); // "[object Array]"
类型转换
-
显式转换
通过内置函数强制转换类型。String(123); // "123" Number("42"); // 42 -
隐式转换
在操作中自动发生的类型转换。
"5" + 1; // "51" (字符串拼接) "5" - 1; // 4 (数字运算)
注意事项
- 使用
===严格相等避免隐式转换问题。 - 大整数运算需使用
BigInt避免精度丢失。 NaN是特殊的数值类型,需用isNaN()检测。






