语法
js
new String(thing)
String(thing)
参数
thing-
要转换为字符串的任何内容。
返回值
当 String() 作为函数调用时(不带 new),它会返回 被强制转换为字符串原始值 的 value。特别地,Symbol 值会被转换为 "Symbol(description)",其中 description 是 Symbol 的 描述,而不是抛出错误。
当 String() 作为构造函数调用时(带 new),它会将 value 强制转换为字符串原始值(不进行特殊的符号处理),并返回一个包装的 String 对象,该对象不是原始值。
警告: 你很少会发现自己需要使用 String 作为构造函数。
示例
String 构造函数与 String 函数
String 函数和 String 构造函数产生不同的结果
js
const a = new String("Hello world"); // a === "Hello world" is false
const b = String("Hello world"); // b === "Hello world" is true
a instanceof String; // is true
b instanceof String; // is false
typeof a; // "object"
typeof b; // "string"
在这里,函数如预期地产生了一个字符串(原始类型)。然而,构造函数产生的是 String 类型的一个实例(一个对象包装器),这就是为什么你通常不希望使用 String 构造函数的原因。
使用 String() 将符号转换为字符串
String() 是唯一一种可以将符号转换为字符串而不会抛出错误的情况,因为它非常明确。
js
const sym = Symbol("example");
`${sym}`; // TypeError: Cannot convert a Symbol value to a string
"" + sym; // TypeError: Cannot convert a Symbol value to a string
"".concat(sym); // TypeError: Cannot convert a Symbol value to a string
js
const sym = Symbol("example");
String(sym); // "Symbol(example)"
规范
| 规范 |
|---|
| ECMAScript® 2026 语言规范 # sec-string-constructor |
浏览器兼容性
加载中…
另见
- 数字和字符串指南