Skip to content

其他值到字符串的转换规则


  • NullUndefined 类型,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"

Released under the MIT License.