其他值到字符串的转换规则
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"