
JavaScript的数据类型转换
转换为数字
在 JavaScript 中,Number
、parseInt
和 parseFloat
都可以将字符串转换为数字,但它们的行为和用途略有不同。下面是清晰的对比:
🔢 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 |
数字 | 0 、NaN |
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 中,有多种方式可以把不同类型的值转换为字符串。不同的转换方式在处理对象或 null
、undefined
等值时会略有不同:
🧵 常见转换方法
1. String(value) —— 显式转换
-
会把任何类型转换为字符串。
-
对于
null
和undefined
,会返回"null"
和"undefined"
。 -
📌 示例:
String(123) // "123" String(true) // "true" String(null) // "null" String(undefined) // "undefined" String([1, 2]) // "1,2"
2. value.toString() —— 方法调用转换
-
只能用于对象或基本类型,不适用于
null
和undefined
,否则报错。 -
更适用于自定义对象或格式控制。
-
📌 示例:
(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) {...}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员Hanserwei
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果