【发布时间】:2018-09-23 17:27:42
【问题描述】:
所以我有这段代码,我尝试通过将对象作为对函数的引用来对其进行变异:
var c = { why: 'older' };
var d;
d = c;
//passing by reference
function changeGreeting(obj) {
obj.why = 'newer' ; // mutate
}
changeGreeting(d)
console.log(c);
console.log(d);
然后我的邪恶双胞胎代码看起来相同但行为不一样:
var c = { why: 'older' };
var d;
d = c;
//passing by reference, i wish..
function changeGreeting(obj) {
obj = { why: 'newer' }; // trying to mutate..
}
changeGreeting(d)
console.log(c);
console.log(d);
【问题讨论】:
-
1) 与 Java 一样,JavaScript 也只有按值传递。它没有传递引用。 2)“对象”不是不能传递的值;对象始终通过引用(指向对象的指针)进行操作,并且您通过值传递引用。
标签: javascript function pass-by-reference javascript-objects