js这个函数中obj=obj||{};是什么意思,obj2===s(obj2)为什么是ture

function s(obj){
obj=obj||{};
obj.n=3;
return obj;
}
var obj=s({});
var obj1=s();
var obj2={a:5};
console.log(obj2===s(obj2));
console.log(obj1,obj1);

obj=obj||{};
这个意思就是如果obj是null或者undefined,那么就把{}赋值个obj
等同以下效果
if(!obj){
obj={}
};
obj2===s(obj2)这个为什么是ture
因为从头到尾 都只有一个对象obj2,s(obj2)这个属于引用赋值
当我们把一个对象赋值给一个新的变量时,赋的其实是该对象的在堆中的地址,而不是堆中的数据。也就是两个对象指向的是同一个存储空间,无论哪个对象发生改变,其实都是改变的存储空间的内容,因此,两个对象是联动的。
温馨提示:答案为网友推荐,仅供参考