微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在JavaScript中[1,2] + [3,4] =“ 1,23,4”?

如何解决为什么在JavaScript中[1,2] + [3,4] =“ 1,23,4”?

+操作者 。

发生的事情是Javascript 并将其连接起来。

更新资料

由于这个问题以及我的回答引起了人们的广泛关注,因此我认为对操作员的总体行为进行 也将是有用且相关的+

因此,就在这里

除E4X和特定于实现的内容外,Javascript(自ES5起)具有 内置数据类型:

  1. Undefined
  2. Null
  3. Boolean
  4. Number
  5. String
  6. Objec

请注意,尽管对于Null和可调用对象而言,typeof返回值有些混乱,但Null实际上不是对象,严格来说,在符合规范的Javascript实现中,所有函数都被视为对象。object``function

没错-Javascript本身 ;只有Array使用某种语法糖来调用Object的实例才能减轻痛苦。

添加更多的混乱,包装等实体newNumber(5)newBoolean(true)并且newString("abc")是所有object类型,而不是数字,布尔值或字符串正如人们所预料。但是对于算术运算符Number,其Boolean行为与数字相同。

容易吧?有了这些,我们就可以继续进行概述了。

            || undefined | null   | boolean | number | string | object |
=========================================================================
 undefined  || number    | number | number  | number | string | string | 
 null       || number    | number | number  | number | string | string | 
 boolean    || number    | number | number  | number | string | string | 
 number     || number    | number | number  | number | string | string | 
 string     || string    | string | string  | string | string | string | 
 object     || string    | string | string  | string | string | string |

*适用于Chrome13,FF6,Opera11和IE9。读者可以自己检查其他浏览器和版本。

如CMS所指出的那样,对于某些对象,例如和和自定义对象Number,操作符不一定会产生字符串结果。它可以根据对象到原始转换的实现而有所不同。例如评估产品a,评估产品a 。Boolean``+``var o = { valueOf:function () { return 4; } };``o +2;``6``number``o + '2'``'42'``string

要查看概述表是如何生成的,请访问http://jsfiddle.net/1obxuc7m/

解决方法

我想将一个数组的元素添加到另一个数组中,所以我尝试了一下:

[1,2] + [3,4]

它回应:

"1,23,4"

到底是怎么回事?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。