【问题标题】:What is {} + {} in JavaScript? [duplicate]JavaScript 中的 {} + {} 是什么? [复制]
【发布时间】:2013-04-06 10:52:33
【问题描述】:

第一部分:

因为当您添加两个数组时,一切都按预期工作:

 [] + []     //output:''

添加一个数组和一个对象也符合我们的预期:

 [] + {}
output:'[object Object]'

{} + {} 在 JavaScript 中是 NaN ?
这是意想不到的结果,那么这背后的原因是什么?

第二部分:

无前缀0的字符串比较中,3大于12:

"3" > "12"
: true

使用填充,一切正常:

 "03" > "12"
: false

字符串比较时必须使用前缀0吗?添加前缀0的原因是什么?

【问题讨论】:

  • [] + [] == '' 适合您吗?你的逻辑是什么?
  • @SergioTulentsev:数组的字符串表示形式是由逗号连接的项目的字符串表示形式。如果它是一个空数组,它的字符串表示将是空的,如果你连接两个空字符串,你会得到一个空字符串。
  • 每个问题你应该发布一个问题。
  • @SergioTulentsev JavaScript 不支持添加对象。他们首先通过ToPrimitive(),然后+ 进行相应的操作(字符串、数字等)。所以,[] + [] 变成了'' + ''
  • 也可以尝试比较:+"3" > +"12"

标签: javascript


【解决方案1】:
  1. {} + {} 被解释为空块{} 后跟表达式+ {}{} 没有数值,所以它产生NaN。如果你强制它被评估为像({} + {}) 这样的表达式,你会得到[object Object][object Object]

  2. 它们是字符串,因此将按字典顺序进行比较。如果您想将它们作为数字进行比较,请先使用parseIntparseFloat 解析它们。

【讨论】:

    【解决方案2】:

    第一部分

    1-

    当您添加两个数组时,您获取每个数组的原始值,并且可以将数组转换为字符串,如下面的[1,2,3,4].toString() //=> 1,2,3,4,因此两个 emty 数组生成为空字符串,并且它们之间的连接生成空字符串。

    2- 当您第二次使用对象添加空字符串时,您正在将对象转换为字符串,如图所示,对象的字符串值为[object Object]

    3-

    当您添加两个对象时,您只是通过+ 将对象转换为数字,请检查此question

    第二部分

    字符串比较是从左到右逐个字母进行的,一旦有偏差,就会确定返回值,忽略字符串长度,如下所示

    "3" > "12"
    

    ASCII 中的“3”大于“1”所以返回 TRUE

    "03" > "12"
    

    ASCII中的“0”小于“1”所以返回为False

    【讨论】:

      【解决方案3】:

      我在最新的 Firefox、Safari 和 Chrome 中尝试了以下操作: 一个 = []; b={};console.log(a+a);console.log(a+b);console.log(b+b);

      火狐

      (an empty string)
      [object Object]
      [object Object][object Object]
      

      [object Object]
      [object Object][object Object]
      undefined   
      

      Safari

      [object Object]
      [object Object][object Object]
      

      按字典顺序,字符串“3”大于字符串“12”。如果您真的希望将字符串作为数字进行比较,您必须告诉 JavaScript 这就是您想要的方式。

      parseInt("3") > parseInt("12");
      

      【讨论】:

        猜你喜欢
        • 2016-01-02
        • 2011-04-02
        • 2014-02-06
        • 2015-12-13
        • 1970-01-01
        • 2011-04-29
        • 2014-01-23
        • 1970-01-01
        • 2016-11-19
        相关资源
        最近更新 更多