【问题标题】:Why show object object when input ({} + {}) in Javascript? [duplicate]为什么在 Javascript 中输入 ({} + {}) 时显示对象对象? [复制]
【发布时间】:2019-02-11 23:45:48
【问题描述】:

为什么会这样

{}+{} 输出 - NaN

({} + {}) 输出- ''[对象对象][对象对象]''

为什么要显示这样的结果?

【问题讨论】:

标签: javascript


【解决方案1】:

当您以某种方式编写{} 时,如果“重复”答案所说的是正确的,它可能会被解释为代码块而不是空对象。空块没有return语句,所以返回undefined

undefined + undefined 返回 NaN,因为它试图在两个非数字值之间进行数学加法。当您编写 {} + {} 但不对结果执行任何操作时,Chrome 会再次将 + 评估为加法,并将 {} 评估为未定义。

但是,一旦您对结果进行实际操作,行为就会有所不同因为浏览器知道您使用的是隐式对象声明语法。如果你说var x = {} + {},Chrome 会创建两个对象并尝试将它们转换为可以与+ 运算符一起使用的值。因此它将对象转换为字符串表示形式并将字符串连接在一起。

当你使用括号时也会发生同样的事情,因为这样的括号内不能存在块,所以它不会将{} 误认为是一个空块。

PS:一开始我错了,我现在只是把我在另一个答案上读到的内容。

【讨论】:

  • 否,{} 未评估为 undefined。绝对没有undefined 参与任何表达式。
  • 在 IE 上这个 {}+{} 会导致蓝屏死机
  • @evc: 哪个IE版本?
  • @Bergi 我知道按照 JS 标准这样做是没有意义的,但只需在 Chrome 的控制台中输入 {} 并返回 undefined。
  • 哦,我将编辑我的答案以指出“重复”所说的内容。
猜你喜欢
  • 2016-01-22
  • 1970-01-01
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
  • 2012-01-05
相关资源
最近更新 更多