js 中 [ ]+{ } 和 { }+[ ] 的区别

js 中 [ ]+{ } 和 { }+[ ] 的区别

💡 原文中文,约600字,阅读约需2分钟。
📝

内容提要

数组与对象相加时会进行隐式类型转换,若包含字符串则进行字符串连接,否则进行数字相加,结果可能是字符串或数字,取决于解析方式。

🎯

关键要点

  • 数组与对象相加时会进行隐式类型转换。
  • 加法规则是调用 valueOf() 或 toString() 以取得非对象的值。
  • 如果任一值是字符串,则进行字符串连接;否则进行数字相加。
  • [ ] 和 { } 的 valueOf() 返回对象自身,最终结果是字符串连接。
  • [].toString() 返回空字符串,({ }).toString() 返回 '[object Object]',结果是 '[object Object]'。
  • { } + [ ] 被解析为加法运算符,而 { } + { } 被解析为空的 block。
  • 在 { } + [ ] 中,{ } 被解析为空的 block,+ 被解析为正号运算符。
  • 对空数组执行正号运算,结果是将数组转型为数字,最终结果为 0。
➡️

继续阅读