转化为数字

js/to_number2026-10-29 11:03:47

转化为数字的规则

在 JavaScript 中,将值转换为数字时,遵循以下规则:

1. undefined

  • 转换为 NaN。

2. null

  • 转换为 0。

3. 布尔值

  • true 转换为 1。
  • false 转换为 0。

4. 数字

  • 直接返回该数字。

5. 字符串

  • 如果字符串是有效的数字表示(如 "123"),则转换为相应的数字(如 123)。
  • 如果字符串包含有效的浮点数表示(如 "123.45"),则转换为相应的浮点数(如 123.45)。
  • 如果字符串是空字符串 "",则转换为 0。
  • 如果字符串包含非数字字符或无法解析为数字(如 "abc"),则转换为 NaN。

6. 对象

  • 调用它的 [Symbol.toPrimitive]()(将 number 作为 hint 值)
  • 如果对象有 valueOf 方法并返回一个原始值,则使用该值进行转换。
  • 如果对象没有 valueOf 方法或 valueOf 方法返回一个对象,则调用 toString 方法并使用返回的字符串进行转换。
  • 如果 toString 方法返回的字符串无法转换为数字,则结果为 NaN。

示例

console.log(Number(undefined)); // NaN
console.log(Number(null)); // 0
console.log(Number(true)); // 1
console.log(Number(false)); // 0
console.log(Number(123)); // 123
console.log(Number("123")); // 123
console.log(Number("123.45")); // 123.45
console.log(Number("")); // 0
console.log(Number("abc")); // NaN
console.log(Number({})); // NaN
console.log(Number({ valueOf: () => 42 })); // 42
console.log(Number({ toString: () => "123" })); // 123

本页目录