number()将true转为1、false转为0;date实例转为毫秒时间戳,无效日期返回nan;null转0,undefined转nan,数组转换有特定规则。

Number构造函数可以将布尔值和日期对象转换为对应的数字表示,但转换规则不同,需注意隐式与显式转换的区别。
布尔值转数字
Number()对布尔值的转换非常直接:true转为1,false转为0。这是ECMAScript规范定义的明确行为,不依赖上下文。
- true → 1,Number(true) 返回 1
- false → 0,Number(false) 返回 0
- 注意:字符串"true"/"false"不会被自动识别为布尔字面量,Number("true") 返回 NaN
日期对象转数字
Number()对Date实例的转换,等价于调用该日期对象的getTime()方法,返回自1970年1月1日00:00:00 UTC以来的毫秒数(时间戳)。
- Number(new Date('2023-01-01')) 返回 1672531200000
- 空日期(如new Date('invalid'))会生成Invalid Date对象,Number()对其返回 NaN
- 与
+new Date(一元加号)效果相同,都是触发valueOf()后返回时间戳
和其他类型对比的注意事项
Number()不是万能转换器,对非原始值或特殊字符串容易出错:
- undefined → NaN,null → 0(注意null是特例)
- 数组:空数组[] → 0;含单个数字元素[42] → 42;含多个或非数字元素 → NaN
- 建议优先使用
Number()而非parseInt()或parseFloat()做纯数值转换,避免截断或进制误判
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











