其他值到字符串的转换规则
Null
和Undefined
类型,null
转换为"null"
,undefined
转换为"undefined"
。Boolean
类型,true
转换为"true"
,false
转换为"false"
。Number
类型的值直接转换,不过那些极小和极大的数字会使用指数形式。Symbol
类型的值直接转换,但是只允许显式强制类型转换,使用隐式强制类型转换会产生错误。- 对普通对象来说,除非自行定义
toString()
方法,否则会调用toString()
(Object.prototype.toString()
)来返回内部属性[[Class]]
的值,如"[object Object]"
。如果对象有自己的toString()
方法,字符串化时就会调用该方法并使用其返回值。
典型示例
js
// Null 和 Undefined
String(null); // "null"
String(undefined); // "undefined"
// Boolean
String(true); // "true"
String(false); // "false"
// Number
String(123); // "123"
String(1.23e-10); // "1.23e-10"
String(1.23e+20); // "1.23e+20"
// Symbol(只能显式转换)
String(Symbol('a')); // "Symbol(a)"
// 'a' + Symbol('b') // 报错:Cannot convert a Symbol value to a string
// 普通对象
String({}); // "[object Object]"
String([1,2,3]); // "1,2,3"
// 自定义 toString
const obj = { toString() { return 'hello'; } };
String(obj); // "hello"