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

欧肯

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

[1,2] + [3,4]

它回应:

"1,23,4"

到底是怎么回事?

扫罗:

+操作者没有为数组定义

发生的事情是Javascript 将数组转换为字符串并将其连接起来。

更新资料

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

所以,就到这里。

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

  1. 未定义
  2. 空值
  3. 布尔型
  4. 目的

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

没错-Javascript 没有原始数组只有Array使用某种语法糖来调用对象的实例才能缓解这种痛苦。

添加更多的混乱,包装等实体new Number(5)new Boolean(true)并且new String("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所指出的那样,对于某些情况下的对象(例如和)NumberBoolean自定义+操作符不一定会产生字符串结果。它可以根据对象到原始转换的实现而有所不同。例如,var o = { valueOf:function () { return 4; } };评估o + 2;产品6a number,评估o + '2'产品'42'a string

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

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么 stdout_lines [1,2] 和 [3,4] 是字符串而不是数组?

如何在a.reshape(3,*(3,4))中理解*(3,4)的用法?

为什么JavaScript数组操作[1,2,3,4] [1,2]返回3?

从文本文件(例如[[1,2],[3,4]])输入到python中的2d列表中

什么是JavaScript中的[1,2,3,4] [1,2]

3,4 轴 pytorch 中的矩阵乘法

我应该避免重新打包多个未打包的迭代吗?例如 (*(1,2),*(3,4)) 得到 (1,2,3,4)

使用R中的四对(1,2),(3,4),(5,6),(7,8)中的三对进行6个数字的组合

预期input_1具有3个维度,但数组的形状为(3,4)

如何转换list1中的list = [1,2,[3,4],[5,6],7,[8,9,10]] = [1,2,3,4,5,6,7,8 ,9,10]在python中?

将熊猫数据框从(12,1)重塑为特定形状(3,4)

如何在jQuery中逐行引用HTML表,col索引-cell(3,4)

ValueError:形状为(3,1)的不可广播的输出操作数与广播形状(3,4)不匹配

Python 3,4 getattr无效语法

如何从整数中删除尾随零(例如:300 => 3,4 => 4,4,5000 => 5,6060 => 606?

传递1 2 23 32 4在python的max函数中返回4,为什么?

如何在JavaScript中[1,2] + [4,5,6] [1] = 1,25

为什么`minimum(1,2)`在Haskell中返回2?

为什么在JavaScript中[5,6,8,7] [1,2] = 8?

在Javascript中,为什么Object.getPrototypeOf([1,2])返回一个空列表?

python any() 的工作方式不同,为什么 [1,3,5] 中的 any([1,2]) 返回 True 而 ['a','v' 中的 any(['a','b']) 不返回, 'X']?

如何停止JSONObject以将我的arrayList [3,4]转换为字符串“ [3,4]”

为什么[1,1,2] | [] == [1,2]在Ruby中是否为true?

为什么 1<<3 + 1<<4 = 256?

Python 3中max([[a in in [1,2]]])和max(a [in in [1,2]])之间的差异

为什么语句[1,2] <[2,1]在python中评估为True

javascript [1,2,3,4] 變成 12, 23, 34

为什么1 =='1,2'为真?

修复ValueError:形状(1,2)和(4,4)不对齐:2(dim 1)!= 4(dim 0)在python中