Day 90/100 (JS) [] + {} 空对象和空数

2021-01-17  本文已影响0人  赵国星

写在前面的话

今儿被空数组和空对象相加整懵了...

举个栗子

console.log({} + []);

这是啥?看不懂...

一个一个来

console.log({});

打印这个是

{}

console.log([]);

打印这个是

[]

没毛病,但俩加起来会打印出

 [object Object]

观察到,第一个o小写,第二个O大写

为啥?

是因为+(加号运算符)

试着运行了下

上面同样的把{}当作区块语句的情况又会发生,不过这次所有的浏览器都会有一致结果,如果{}(空对象)在前面,而[](空数组)在后面时,前面(左边)那个运算元会被认为是区块语句而不是对象字面量。

所以{} + []相当于+[]语句,也就是相当于强制求出数字值的Number([])运算,相当于Number("")运算,最后得出的是0数字。

又因为是对象0,所以打印出Object

相比之下,反过来会比较纯粹

具体加号运算符的原理,在参考资料中比较详细了~

参考资料

https://segmentfault.com/a/1190000008038678

上一篇下一篇

猜你喜欢

热点阅读