在添加空数组和对象时,为什么控制台会这样返回?

Gopigoppu

我正在尝试在chrome控制台中打印以下组合的结果。但是无法理解结果。为什么控制台返回以下结果。谁能解释一下?

[] + {} ==> "[object Object]"

{} + {} ==> "[object Object][object Object]"

{} + [] ==> 0

[] + [] ==> ""
乔纳斯·威尔姆斯

如果添加两个对象(数组也是对象),js将为toString调用,因此

 [] + {} 

实际上是:

 [].toString() + {}.toString()

对数组进行字符串化会连接其元素,并且由于数组为空,因此将字符串化为""对象始终被字符串化为"[Object object]"这就解释了一切,除了:

 {} + []

...这就是您的错误,它将返回 "[Object object]"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Laravel 5.7-为什么以编程方式列出控制台命令会返回0?

当数字的长度大于21时,为什么会向控制台记录5的长度?

为什么控制台会提供完整的 jsFiddle 链接?

为什么控制台会覆盖输出?

为什么Chrome的JS控制台返回DOM元素而不是jQuery对象?

为什么我的数组返回的方法无法打印到控制台?

为什么从控制台读取字符串时scanf中的%n返回0

如果我控制台记录这些值,我会得到它们为什么它返回一个空对象

为什么JSfiddle和Chrome控制台返回同一函数的不同值?

为什么不能在控制台日志中添加整数和变量?

为什么print()和logger对象以意外顺序流式传输到控制台输出?

控制台记录对象数组时的语法错误

重定向输出时,为什么调整控制台缓冲区会引发无效的句柄异常?

CMD \控制台的“终端”是什么?为什么这样称呼他们?

为什么过滤具有多个条件的对象数组会返回一个空数组?

为什么在控制台登录时,具有属性[name]的JS对象变成具有'result'属性的对象?

为什么在控制台记录对象时不显示其他两个对象属性?

在对象内部创建对象,然后将其添加到嵌套对象时,控制台仅返回“对象”,而不是添加到其中的值

java.util.HashMap----看控制台,为什么打印顺序是这样的

JavaScript的对象文字和控制台登录时似乎要命名的对象之间有什么区别?

为什么运行此代码时控制台在循环之前返回第一个随机数?

获取对象返回的控制台错误

为什么要在从Leafpad复制并将其粘贴到控制台时添加特殊字符?

为什么在打开H2控制台时看不到Java添加的表?

为什么在日期对象上调用 Object.getOwnPropertyDescriptors 会返回一个空数组?

为什么添加日期对象和时间对象会返回不正确的值?

为什么控制台返回正确的数据,而不返回浏览器?

为什么Gson会漂亮地打印到控制台,而不打印到文件?

为什么打开SSMS会影响控制台应用程序