千家信息网

javascript中为什么[1,2]+[3,4]不等于[1,2,3,4]

发表于:2024-10-17 作者:千家信息网编辑
千家信息网最后更新 2024年10月17日,本篇文章为大家展示了javascript中为什么[1,2]+[3,4]不等于[1,2,3,4],内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。有人提问:arra
千家信息网最后更新 2024年10月17日javascript中为什么[1,2]+[3,4]不等于[1,2,3,4]

本篇文章为大家展示了javascript中为什么[1,2]+[3,4]不等于[1,2,3,4],内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

有人提问:arrays - Why does [1,2] + [3,4] = "1,23,4" in JavaScript?

0. 问题

我想将一个数组追加到另一个数组的后面,于是我在 firebug 编写如下代码:

[1,2] + [3,4]

但是,出乎意料,它却输出了:

"1,23,4"

而没有输出我期望的:

[1,2,3,4]

这是怎么回事呢?为什么 [1,2] + [3,4] 不等于 [1,2,3,4]?

1. 解答

JavaScript 的 + 运算符有两个目的:

  1. 将两个数相加;

  2. 将两个字符串连接。

规范并没有定义 + 运算符在数组上的行为,所以javascript 首先 把数组转换成字符串,然后在字符串上进行 + 运算。

如果想连接两个数组,可以使用数组的 concat 方法:

[1, 2].concat([3, 4]) // [1, 2, 3, 4]

javascript 中的 + 运算符概述

JavaScript 具有 6 种内置数据类型: (译注:从给出的连接看,原作者的意思应该是 原始类型系统 的数据类型,JavaScript 事实上有两套类型系统。 第一套类型系统是用 typeof 来识别,称之为原始(primitive)类型系统,而第二套类型系统是以它为基础,从 object 这一种类型中发展起来的,即对象类型系统,对象类型系统用 instanceof 来识别。@justjavac)

  1. undefined

  2. boolean

  3. number

  4. string

  5. function

  6. object

需要注意的是,null 和 [] 是两个截然不同的类型,当使用 typeof 运算时,它们却都返回 object。 但是在使用 + 运算符时,在这两种情况下的工作方式是不同的。

在JavaScript 中,数组不是基本类型,它的存在仅仅是一个糖衣语法,它其实是 Array 类的实例。(ps:function 其实也是 Function 类实例的糖衣语法。)

如果说道现在你脑子还是清醒的,是时候加点儿猛料了。javascript 的对象包装器类型例如 new Number(5), new Boolean(true) 和 new String("abc") 也都是 object 类型,它们不是数字,布尔,字符串。然而,对于算数运算符 Number 和 Boolean 表现的为数字。

还记得我前面说过的 + 运算符吗?它的操作对象是 数字和字符串,也就是 Number,Boolean,String 或者 number,boolean,string。

下面的表格就是 + 运算符对于不同类型进行运算后,得到的结果类型


本表适用于 Chrome 13, Firefox 6, Opera 11 and IE9。

注意:用户自定义对象进行 + 运算不一定总产生一个字符串结果。这主要取决于 对象类型到原生类型转换 的实现方式。

例如:

var o = {     valueOf : function () { return 4; } };

计算 o + 2 将得到 6, 是一个数字 number;计算 o + '2' 得到 '42', 是一个字符串 string。

上述内容就是javascript中为什么[1,2]+[3,4]不等于[1,2,3,4],你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注行业资讯频道。

类型 运算 字符 字符串 数组 系统 运算符 两个 对象 数字 不同 原始 内容 实例 就是 技能 数据 方式 知识 糖衣 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 报价数据库建立 网络安全宣传周进基层活动主持词 网络安全等保三级在哪办理 近几年全球网络安全事件 宝山区海航软件开发哪家便宜 怎么让数据库可以远程访问 美国计算机网络技术专业 abp如何设置数据库连接时长 刑法涉及的网络安全罪 凡人造梦网络技术工作室 深圳掌柜互联网科技有限公司 易语言ip连接服务器 360网络安全防护系统操作使用 软件开发流程和规范 北京鑫宝源互联网科技 服务器内存条插槽颜色都一样 网络安全管理应急处理制度 网络安全法手册源文件 网络安全责任制联合发文 成都思维联动网络科技互联网 谷歌云的数据库管理技术 sql2012导入数据库 网络安全主题展览 公共信息网络安全巡警 网络安全会议一周年 网易版我的世界连接不到服务器 如何查看机房服务器里的内容 aws在中国有服务器吗 中馨网络技术 密码管家显示服务器错误
0