【发布时间】:2020-07-30 14:37:00
【问题描述】:
我不知道为什么在下面的例子中不能给对象定义 null,但是可以给它添加属性
function callByReference(myFunc) {
myFunc.b = 2;
myFunc = null; // this not set null to Object arg
// myFunc.b = 2; //If I set it after, throws error
}
let customObj = {
a: 1
};
console.log("Before call by reference method");
console.log(customObj);
callByReference(customObj);
console.log("After call by reference method");
console.log(customObj);
即使我先将其设置为null,然后添加属性也会引发错误;
我不太了解这种行为。有什么理由吗?也许我不理解通过引用传递参数时 javascript 的工作原理
【问题讨论】:
-
为什么你期望 null 有属性?你可能想设置 myFunc = {}
-
因为
myFunc是该函数的局部变量,它的 value 是引用,并且为局部变量分配新值不会影响对象引用的旧值。 -
@BhojendraRauniyar 如果我设置
myFunc = {}该对象仍然具有属性 a -
您仍要删除所有属性吗?还是只是一个为什么的问题?
-
@NinaScholz 这只是一个为什么的问题,我在查看我的代码时有疑问
标签: javascript pass-by-reference