为什么js中{}+{}的长度为30,但是{}的长度没有?

西安小哥
  • 1.2k

为什么js中{}+{}的长度为30,但是{}的长度没有?

clipboard.png

回复
阅读 3.3k
4 个回答
✓ 已被采纳

在js里+号这个运算符用于字符串相连接 比如

var a = 'hello'
var b = ' world'
a + b + '!' // hello world!

或数值相加

1 + 2 // 3

如果数值和字符串相加,会将数值隐式转换为字符串类型

1 + '2' // 12

对于两个数组相加,会将数组隐式转换为type类型

typeof {} // object

a = {} + {} 的结果为

'[object Object][object Object]'

a为字符串,字符串长度为30,因此a.length = 30

{}是一个对象, 对象没有length方法。
{}+{}是一个字符串。, 字符串有length方法。
{}+{}变为[object Object][object Object]的原理是js是弱类型, 隐性转换了数据类型。

{}+{}时执行了字符串拼接,自动调用了对象的toString()方法转换为字符串。

typeof a
"string"
a
"[object Object][object Object]"
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏