如果我将在两个对象之间使用加法运算符,将会发生什么

时间:2019-07-02 11:35:25

标签: javascript object

我是javascript的初学者,我想如果使用加法运算符添加两个对象会发生什么情况。

var obj = { name: "mango" }
var obj2 = { name: "mango" }
var obj3 = obj + obj2
console.log(obj3)

3 个答案:

答案 0 :(得分:1)

addition operator经历了一系列步骤,以根据操作数确定要执行的操作。

首先,它将尝试将其操作数转换为基元,然后处理结果。将对象转换为原始对象时,最终将是字符串,数字,布尔值等,具体取决于对象toString和/或valueOf的实现。如果以两个字符串结尾,则将它们串联起来。如果没有,它将原始元素转换为数字,然后以数学方式将它们相加。

一个简单的对象(例如代码中的对象)最终转换为字符串"[object Object]"。因此,您的结果是该字符串与其自身相连:"[object Object][object Object]"

var obj = {name:"mango"};
var obj2 = {name:"mango"};
var result=obj+obj2; // It's not an object, so I called it `result`
console.log(result);

有些对象由于实现了toString和/或valueOf而转换为数字或其他基元。如上所述,如果对象转换为字符串或数字以外的其他原语,则加法运算符会将原语转换为数字。例如:

const a = {
  value: true,
  valueOf() {
    return this.value;
  }
};
const b = {
  value: 41,
  valueOf() {
    return this.value;
  }
};
const result = a + b;
console.log(result); // 42

在该示例中,a转换为原语true(布尔值),而b转换为数字41。由于这两个字符串都不都是,因此加法运算符会将它们转换为数字(41已经是数字,true被转换为1)并将它们加在一起,得到{{1} }。

答案 1 :(得分:0)

执行console.log(obj3)将记录结果。如您所见,它以以下格式返回两个对象:[object Object][object Object]。注意,这不是一个新对象,返回的这些对象是对旧对象的引用。

答案 2 :(得分:0)

此处变量objobj2包含JSON对象

var obj = {name:"mango"}
var obj2={name:"mango"}
var obj3=obj+obj2

参考以上代码,输出为

[object Object][object Object]

实际上,+运算符实际上是将两个或多个变量串联在一起。

var obj = "mango"
var obj2 = "mango"
var obj3 = obj + obj2 

输出为

mangomango