number转string应优先选string()——安全通用,可处理null/undefined;需进制转换用tostring(radix);拼接场景用模板字面量;避免隐式转换''+num;格式化需求用tofixed等。

Number 转 String 的核心不是“怎么快”,而是“怎么稳且意图清晰”。不同方法适用不同场景,选错可能引发隐式错误或运行时异常。
优先用 String() —— 最安全、最通用
它能处理所有原始值,包括 null 和 undefined,不会报错,返回对应字符串 "null" 或 "undefined"。语义明确,可读性强,适合绝大多数业务逻辑。
- 推荐写法:
String(123)、String(null)、String(undefined) - 不支持进制转换,但日常数字转字符串本就不需要进制控制
- 避免与
new String()混淆——后者创建的是对象,typeof为"object"
需要进制转换时用 toString(radix)
当你要把数字转成二进制、十六进制等格式(比如颜色值、位运算调试、编码标识),toString() 是唯一原生支持的方案。
- 正确写法:
(255).toString(16)→"ff";(10).toString(2)→"1010" - 注意字面量调用要加括号:
123.toString(16)会语法错误,必须写成(123).toString(16)或123..toString(16) -
null和undefined不能调用该方法,会直接抛出TypeError
模板字面量 `${num}` —— 适合拼接场景
当你本就要把数字嵌入字符串中(如日志、DOM 内容、API 参数拼接),用模板字面量最自然,且自动触发转字符串,无需额外函数调用。
- 示例:
const msg = `User ID: ${id} loaded`,id会自动转为字符串 - 性能与
String()接近,且更易维护;不建议单独为转类型而写`${num}`,那样反而冗余 - 对
null/undefined行为同String(),安全可靠
避免仅靠 '' + num 做关键转换
虽然简洁且执行快,但它依赖加号的隐式类型提升规则,在复杂表达式中容易出错(如 1 + 2 + "" vs 1 + "" + 2 结果不同),也掩盖了开发者的真实意图。
- 可用于简单脚本或性能敏感的底层工具函数,但不推荐出现在业务代码或团队协作项目中
- 对
null和undefined虽然能转("" + null === "null"),但不如String()直观可控 - 无法用于
undefined属性访问后的链式操作,比如obj?.count + ""可能得"undefined",而你未必想暴露这个细节
按需选用 toFixed / toExponential / toPrecision
这些方法不只是转字符串,还带格式化能力,适用于展示层:金额、科学数据、精度控制等。它们返回的一定是字符串,且含固定小数位或指数形式。
-
toFixed(2):保留两位小数并四舍五入,3.1415.toFixed(2)→"3.14" -
toExponential(1):强制科学计数法,12345.toExponential(1)→"1.2e+4" -
toPrecision(4):控制总有效位数,123.456.toPrecision(4)→"123.5" - 注意:输入非数字(如
NaN)也会返回字符串形式(如"NaN"),但不建议用它们做基础类型转换
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











