我是javascript的初学者,我想如果使用加法运算符添加两个对象会发生什么情况。
var obj = { name: "mango" }
var obj2 = { name: "mango" }
var obj3 = obj + obj2
console.log(obj3)
答案 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)
此处变量obj
和obj2
包含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