Javascript是否通过引用传递?

Javascript是通过引用传递还是通过值传递?这是 Javascript中的 一个示例 :The Good Parts

。我my对矩形函数的参数非常困惑。它实际上是undefined,并在函数内部重新定义。没有原始参考。如果我从功能参数中删除它,则内部区域功能将无法访问它。

是关闭吗?但是没有函数返回。

var shape = function (config) {

var that = {};

that.name = config.name || "";

that.area = function () {

return 0;

};

return that;

};

var rectangle = function (config, my) {

my = my || {};

my.l = config.length || 1;

my.w = config.width || 1;

var that = shape(config);

that.area = function () {

return my.l * my.w;

};

return that;

};

myShape = shape({

name: "Unhnown"

});

myRec = rectangle({

name: "Rectangle",

length: 4,

width: 6

});

console.log(myShape.name + " area is " + myShape.area() + " " + myRec.name + " area is " + myRec.area());

回答:

基元按值传递,对象按“引用副本”传递。

具体来说,当您传递对象(或数组)时,您(无形中)传递了对该对象的引用,并且可以修改该对象的 内容

,但是如果您尝试覆盖该引用,则不会影响该对象的副本。调用者持有的引用-即引用本身通过值传递:

function replace(ref) {

ref = {}; // this code does _not_ affect the object passed

}

function update(ref) {

ref.key = 'newvalue'; // this code _does_ affect the _contents_ of the object

}

var a = { key: 'value' };

replace(a); // a still has its original value - it's unmodfied

update(a); // the _contents_ of 'a' are changed

以上是 Javascript是否通过引用传递? 的全部内容, 来源链接: utcz.com/qa/398587.html

回到顶部