Javascript 为什么JS对象索引可以同时分配键和值?

Javascript 为什么JS对象索引可以同时分配键和值?,javascript,object,Javascript,Object,有关下列事项: var obj1={ 答:1,, b:2 }; 变量obj2={ b:4, c:3 }; 功能扩展(obj1、obj2){ 用于(obj2中的i){ 如果(!(obj1中的i)){ obj1[i]=obj2[i]; } } 返回obj1; } 延伸(obj1、obj2); console.log(obj1);//-->{a:1,b:2,c:3} console.log(obj2);//-->{b:4,c:3}如果要复制的属性在obj1中尚不存在,则代码会将属性从obj2复制到o

有关下列事项:

var obj1={
答:1,,
b:2
};
变量obj2={
b:4,
c:3
};
功能扩展(obj1、obj2){
用于(obj2中的i){
如果(!(obj1中的i)){
obj1[i]=obj2[i];
}
}
返回obj1;
}
延伸(obj1、obj2);
console.log(obj1);//-->{a:1,b:2,c:3}

console.log(obj2);//-->{b:4,c:3}
如果要复制的属性在obj1中尚不存在,则代码会将属性从obj2复制到obj1

用于。。。在
中迭代,因此示例中的
i
将具有值
b
,然后是
c

i
具有值
b
时,将不会执行if子句,因为属性
b
已在obj1中。当
i
具有值
c
时,将执行if子句,因此其中的行如下所示

obj1['c'] = obj2['c']; // Assign value of obj2['c'] to property 'c' in obj1
这基本上是

obj['c'] = 3; // Assign value 3 to property 'c' in obj1

“赋值,而不是键”是什么意思?
i
是键,
obj2[i]
是值。@PiotrKocia因此函数在对象中创建一个新的键/值对:(c:3)。它是通过线obj1[i]=obj2[i]创建的。Obj1[i]分配“c”,而obj2[i]分配“3”。也许“分配”是一种错误的思考方式,这正是让我感到困惑的原因?您希望得到什么样的输出?