最直接可靠的方式是使用 String() 构造函数,它对 null 返回 "null"、对 undefined 返回 "undefined",不报错、不调用 toString(),安全且语义明确。

JavaScript 中把 null 和 undefined 安全转为字符串,最直接可靠的方式是使用 String() 构造函数,它对所有原始值和对象都有一致、明确的转换规则。
String() 是最安全的显式转换方式
String() 对 null 返回 "null",对 undefined 返回 "undefined",不会报错,也不依赖上下文:
-
String(null)→"null" -
String(undefined)→"undefined" -
String(0)→"0"(数字、布尔等也按预期工作)
它不触发隐式调用(比如不调用对象的 toString()),避免了自定义对象可能抛错的风险,适合通用场景。
避免用 + "" 或模板字符串做“安全”转换
虽然 null + "" 或 \`${null}\` 也能得到 "null",但它们本质是隐式类型转换,底层仍会尝试调用 toString() 或 valueOf()。对某些特殊对象(如被篡改原型或返回非字符串的 toString)可能出人意料,且语义不够清晰。不是真正意义上的“安全”或可预测。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
立即学习“Java免费学习笔记(深入)”;
需要空字符串代替 null/undefined 时,先做判断再转换
如果业务逻辑要求把 null 和 undefined 当作“空内容”,统一转成 "",不能依赖 String(),而应主动判断:
-
value == null ? "" : String(value)(推荐,简洁覆盖两者) value === undefined || value === null ? "" : String(value)- ES2020 可用空值合并操作符:
String(value ?? "")(注意:??后必须是字符串,否则String(null ?? "default")才有效)
慎用 toString() 方法
null.toString() 和 undefined.toString() 会直接抛 TypeError,不可用。即使写成 (value || "").toString(),在 value 是 0、false、"" 等 falsy 值时也会误转为空字符串,逻辑失真。不建议用于安全转换。

















