Skip to content
陈广亮的技术博客
Go back

Symbol.toPrimitive 与 JS 加法运算

Symbol.toPrimitive

var obj = {
  [Symbol.toPrimitive](hint) {
    if (hint == "number") return 10;
    if (hint == "string") return "hello";
    return true;
  },
};

+obj; // 10 (hint: "number")
`${obj}`; // "hello" (hint: "string")
obj + ""; // "true" (hint: "default")

[] + {} vs {} + []

[] + {};
// [].toString() + {}.toString() → "" + "[object Object]" → "[object Object]"

{} + [];
// {} 被解析为代码块,变成 +[] → +("") → 0

所以 {} + [] != [] + {}0 != "[object Object]")。


Share this post on:

Previous Post
Hello World - 博客新生
Next Post
拓扑排序