【问题标题】:In JavaScript, why does num == [num]? [duplicate]在 JavaScript 中,为什么 num == [num]? [复制]
【发布时间】:2012-06-05 12:40:09
【问题描述】:

这些陈述的评估结果为真有什么原因吗?

0 == [0];
1 == [1];
5 == [5];
5000 == [5000];
1000000 == [1000000];

所以基本上任何数字都等于包裹在数组中的自身?这背后的逻辑是什么?

【问题讨论】:

    标签: javascript numbers


    【解决方案1】:

    这是因为 non-strict equality operator 在这种情况下将其两个操作数都强制转换为字符串,而数组的字符串表示形式是它包含的元素,用逗号分隔:

    >>> [1, 5].toString()
    "1,5"
    

    由于您问题中的数组仅包含一个元素,因此它们的字符串表示形式与其元素的相同:

    >>> [5000].toString()
    "5000"
    

    【讨论】:

      【解决方案2】:

      因为==不比较变量的类型,而===是比较变量的类型,所以:

      0 == [0]  //true
      0 === [0] // false
      

      同样的情况:

      0 == '0'  //true
      0 === '0' //false
      

      【讨论】:

        【解决方案3】:

        [0] 是一个包含一个元素“0”的数组。所以0 == [0] 相当于做:

        0 == myArray(0) 用另一种语言。其中myArray(0) returns the value at the index 0,在本例中为 0。

        这就是我对 JavaScript 数组的理解。如果我错了,其他人可能想跳进去纠正我。

        【讨论】:

          【解决方案4】:

          这背后的一个原因是使用的运算符是“==”,它只比较比较值而不是数据类型,因为 1=="1" 是真的。

          【讨论】:

            猜你喜欢
            • 2012-01-10
            • 2014-01-02
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-05-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多