String() 构造函数
**String()
** 构造函数创建 String
对象。当作为函数调用时,它返回 String 类型的原始值。
语法
参数
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 语言规范 # sec-string-constructor |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。
另请参阅
- 文本格式化 指南