javascript 引用传递-js函数传引用:代码示例

quanzhankaifa

温馨提示:这篇文章已超过299天没有更新,请注意相关的内容是否还可用!

javascript 引用传递-js函数传引用:代码示例

JavaScript中的函数参数是通过引用传递的。这意味着当我们将一个对象作为参数传递给函数时,函数内部对该对象的修改会影响到原始对象。这是因为JavaScript中的对象是通过引用来传递的,而不是通过值来传递的。

例如,假设我们有一个函数`changeName`,它接受一个人的对象作为参数,并将该人的姓名修改为"John"。在函数内部,我们可以直接修改该对象的属性来实现这一点。当我们在函数外部访问该对象时,我们会发现它的姓名已经被修改了。

function changeName(person) {

person.name = "John";

}

var person1 = { name: "Alice" };

console.log(person1.name); // 输出 "Alice"

changeName(person1);

console.log(person1.name); // 输出 "John"

在上面的示例中,我们首先创建了一个名为`person1`的对象,它的姓名属性被设置为"Alice"。然后,我们调用`changeName`函数并将`person1`作为参数传递给它。在函数内部,我们将`person1`的姓名属性修改为"John"。当我们在函数外部再次访问`person1`的姓名属性时,我们会发现它已经被成功修改为"John"。

这是因为在JavaScript中,对象是通过引用来传递的。当我们将一个对象作为参数传递给函数时,函数接收到的是对象的引用,而不是对象本身的副本。函数内部对该对象的修改会直接影响到原始对象。

需要注意的是,虽然函数参数是通过引用传递的,但是如果在函数内部重新分配一个新的对象给参数,那么它将不会影响到原始对象。因为此时函数内部的参数引用已经指向了一个新的对象。

function changePerson(person) {

person = { name: "Bob" };

}

var person2 = { name: "Alice" };

console.log(person2.name); // 输出 "Alice"

changePerson(person2);

console.log(person2.name); // 输出 "Alice"

在上面的示例中,我们定义了一个新的函数`changePerson`,它将一个人的对象作为参数。在函数内部,我们重新分配了一个新的对象给参数`person`。尽管在函数内部我们修改了参数的引用,但是这并不会影响到原始的`person2`对象。当我们在函数外部访问`person2`的姓名属性时,它仍然是"Alice"。

文章版权声明:除非注明,否则均为莫宇前端原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码