转换为数字

在 JavaScript 中,NumberparseIntparseFloat 都可以将字符串转换为数字,但它们的行为和用途略有不同。下面是清晰的对比:


🔢 Number(value)

用于将一个值转换为“数字类型”。适合用于需要精确转换的场景。

  • ✅ 可以处理整数、浮点数、空字符串、布尔值等。

  • ❌ 如果字符串包含非数字字符(比如 "123abc"),会返回 NaN

  • 📌 示例:

    Number("123")       // 123
    Number("123.45")    // 123.45
    Number("123abc")    // NaN
    Number("")          // 0
    Number(true)        // 1
    

🧮 parseInt(string, radix)

专门用于将字符串转换为“整数”,并可以指定进制(比如二进制、十六进制)。

  • ✅ 忽略字符串中的非数字尾部

  • ❌ 遇到非数字头部会返回 NaN

  • 📌 示例:

    parseInt("123abc")     // 123
    parseInt("abc123")     // NaN
    parseInt("10", 2)      // 2  // 二进制的 "10" 等于十进制 2
    parseInt("0xF", 16)    // 15
    

🌊 parseFloat(string)

用于将字符串转换为“浮点数”,可以识别小数点。

  • ✅ 忽略尾部非数字字符。

  • ❌ 遇到非数字头部会返回 NaN

  • 📌 示例:

    parseFloat("123.45px")     // 123.45
    parseFloat("abc123.45")    // NaN
    parseFloat("123")          // 123
    

✅ 总结对比

方法 类型 能否处理混合字符 支持进制转换 返回值类型
Number() 数字类型 ❌ 严格 ❌ 不支持 number / NaN
parseInt() 整数 ✅ 可容忍尾部 ✅ 支持 number / NaN
parseFloat() 浮点数 ✅ 可容忍尾部 ❌ 不支持 number / NaN

转换为布尔

在 JavaScript 中,值转换为布尔类型时遵循 “真值”与“假值”判断规则(truthy vs. falsy)。你可以使用 Boolean(value) 或直接在条件语句中测试,例如 if (value)


✅ 以下是会转换为 true 的值(truthy)

类型 示例 转换结果
字符串 "hello""false" true
数字 除了 0 和 NaN true
对象 {}[] true
函数 function() {} true
特殊值 Infinity, -Infinity true
Boolean("Vue")         // true
Boolean(123)           // true
Boolean({})            // true

❌ 以下是会转换为 false 的值(falsy)

类型 示例 转换结果
空字符串 "" false
数字 0NaN false
未定义 undefined false
空值 null false
布尔值 false false
Boolean("")            // false
Boolean(0)             // false
Boolean(null)          // false
Boolean(undefined)     // false

🔎 快速测试方法

你也可以使用两次逻辑非运算符 !! 来进行布尔转换:

!!"CSS"        // true
!!0            // false
!![]           // true
!!null         // false

转换为字符串

在 JavaScript 中,有多种方式可以把不同类型的值转换为字符串。不同的转换方式在处理对象或 nullundefined 等值时会略有不同:


🧵 常见转换方法

1. String(value) —— 显式转换

  • 会把任何类型转换为字符串。

  • 对于 nullundefined,会返回 "null""undefined"

  • 📌 示例:

    String(123)          // "123"
    String(true)         // "true"
    String(null)         // "null"
    String(undefined)    // "undefined"
    String([1, 2])       // "1,2"
    

2. value.toString() —— 方法调用转换

  • 只能用于对象或基本类型,不适用于 nullundefined,否则报错。

  • 更适用于自定义对象或格式控制。

  • 📌 示例:

    (123).toString()          // "123"
    true.toString()           // "true"
    [1, 2, 3].toString()      // "1,2,3"
    // null.toString()        // ❌ TypeError
    // undefined.toString()   // ❌ TypeError
    

3. 模板字符串 ${value} —— 隐式转换

  • 自动调用 String(value),适合拼接字符串。

  • 📌 示例:

    `${123}`         // "123"
    `${null}`        // "null"
    `${[1, 2]}`      // "1,2"
    

🎯 总结对比表

方法 可转换类型 null/undefined 安全 推荐场景
String(value) 所有类型 ✅ 安全 通用转换
value.toString() null/undefined ❌ 会报错 对象自定义格式
${value} 所有类型 ✅ 安全 字符串拼接与输出

隐式转换

🧵 1. 转为字符串(String)

let a = 100;
let b = a + "";
  • a + "" 是最常见的隐式转换方式之一。
  • 类似的方式还有 String(a),或用模板字符串 ${a}
  • 应用场景:拼接输出、表单处理、URL 参数等。

🔢 2. 转为数字(Number)

let d = "100";
let e = d - 0;
  • 减号 - 操作符触发隐式数值转换。
  • 其他方式还有 Number(d)parseInt(d, 10)
  • 典型场景:处理来自表单或 API 的字符串数字。

✅ 3. 转为布尔值(Boolean)

let g = "100";
let h = !g;
  • 使用 ! 先将值转为布尔再取反。
  • 两次取反 !!g 可用于判断真值(truthy)。
  • 常用于条件语句中,例如:if (!!g) {...}