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

[1,2] + [3,4]

它的回应是:

"1,23,4"

怎么一回事?

推荐答案

+号接线员is not defined for arrays.

发生的是Javascript converts arrays into strings并将它们连接在一起.

 

使现代化

由于这个问题以及我的答案得到了很多关注,我觉得这将是有用的和相关的,有一个关于+运算符一般行为的overview.

所以,它开始了.

不包括E4X和特定于实现的东西,Javascript(截至ES5)有6个内置data types:

  1. 未定义
  2. 布尔值
  3. 数字
  4. 一串
  5. 对象

注意,尽管typeof somewhat confusingly returns object表示空,function表示可调用对象,但空实际上不是一个对象,严格来说,在符合规范的Javascript实现中,所有函数都被视为对象.

没错-Javascript本身就有no primitive arrays;只有一个名为Array的对象的实例加了一些语法糖来减轻痛苦.

除了念力之外,包装器实体(如new 数字(5)new 布尔值(true)new 一串("abc")Wrapper)都是object型的,而不是人们想象的数字、布尔值或字符串.然而,对于算术运算符数字布尔值而言,它们表现为数字.

放松点,嗯?有了所有这些,我们可以进入概述本身.

Different result types of 100 by operand types

            || 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.判断其他浏览器和版本留给读者练习.

Note:正如CMS所指出的,对于对象的某些情况,例如数字布尔值和自定义对象,+运算符不一定产生字符串结果.它可以根据对象到基本体转换的实现而变化.例如,var o = { valueOf:function () { return 4; } };判断o + 2;产生6number,判断o + '2'产生'42'string.

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

Javascript相关问答推荐

为什么promise对js中的错误有一个奇怪的优先级?

为什么按钮会随浮动属性一起移动?

变量的值在Reaction组件中的Try-Catch语句之外丢失

是什么导致了这种奇怪的水平间距错误(?)当通过JavaScript将列表项元素追加到无序列表时,是否在按钮之间?

React.Development.js和未捕获的ReferenceError:未定义useState

以Angular 实现ng-Circle-Progress时出错:模块没有导出的成员

使用带有HostBinding的Angular 信号来更新样式?

如何在Bootstrap中减少网格系统中单个div的宽度

无法避免UV:flat的插值:非法使用保留字"

如何使用<;Link>;执行与JS Reaction中的";window.Location=/GameOverDied;";类似的操作?

在不扭曲纹理的情况下在顶点着色器中旋转UV

OnClick更改Json数组JSX中的图像源

图表4-堆叠线和条形图之间的填充区域

Reaction useState和useLoaderData的组合使用引发无限循环错误

如何在独立的Angular 应用程序中添加Lucide-Angel?

无法使用Redux异步函数读取未定义的useEffect钩子的属性';map';

Plotly.js栏为x轴栏添加辅助文本

Played link-Initialize.js永远显示加载符号

为什么我的Reaction组件不能使用createBrowserRouter呈现?

此上下文在JavaScript中