美文网首页
Day 90/100 (JS) [] + {} 空对象和空数

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

作者: 赵国星 | 来源:发表于2021-01-17 00:11 被阅读0次

    写在前面的话

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

    举个栗子

    console.log({} + []);

    这是啥?看不懂...

    一个一个来

    console.log({});

    打印这个是

    {}

    console.log([]);

    打印这个是

    []

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

     [object Object]

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

    为啥?

    是因为+(加号运算符)

    试着运行了下

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

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

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

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

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

    参考资料

    https://segmentfault.com/a/1190000008038678

    相关文章

      网友评论

          本文标题:Day 90/100 (JS) [] + {} 空对象和空数

          本文链接:https://www.haomeiwen.com/subject/ooctzktx.html