首页 理论教育JavaScript传值和传引用

JavaScript传值和传引用

【摘要】:JavaScript参数传递分为两种:传值和传引用。动手写7.3.2执行7.3.2.html,输出结果到网页,如下图所示。图7.3.2 函数调用传值传值调用在函数内部修改形参的值,不会影响到实参。如果实参是简单数据类型,则采用传值调用;如果实参是引用数据类型,则采用传引用调用。

JavaScript参数传递分为两种:传值和传引用。传值表示在函数内部改变参数的值,不会影响实参的值;传引用表示在函数内部修改形参的成员,会影响实参的值。

不管是哪种传递,在函数内部直接对形参赋值,都不会影响实参的值。

1.值传递

使用简单数据类型的实参调用函数时,在函数内部修改形参的值,实参的值不会随着修改。简单数据类型包括布尔值、数字、字符串、null、undefined。

7.3.2.html以值传递的方式调用函数,如下所示。

动手写7.3.2

执行7.3.2.html,输出结果到网页,如下图所示。

图7.3.2 函数调用传值

传值调用在函数内部修改形参的值,不会影响到实参。

2.引用传递

使用复杂数据类型的实参调用函数时,在函数内部修改形参的属性,实参的属性也会随之改变。复杂数据类型包括对象、数组、函数。

7.3.3.html以引用传递的方式调用函数,如下所示。(www.chuimin.cn)

动手写7.3.3

执行7.3.3.html,输出结果到网页,如下图所示。

图7.3.3 函数调用传引用修改形参属性

传引用时在函数内部修改形参的属性会同步修改实参的属性,但是在函数内部为形参重新赋值时,实参的值不会随之改变。

7.3.4.html在函数内为形参重新赋值,如下所示。

动手写7.3.4

执行7.3.4.html,输出结果到网页,如下图所示。

图7.3.4 引用调用,对形参重新赋值,不影响实参

传引用时在函数内部直接对形参赋值,不是修改形参属性,不会影响实参。

函数调用传值还是传引用根据实参的数据类型决定,与函数声明无关。如果实参是简单数据类型(布尔值、数字、字符串、null、undefined),则采用传值调用;如果实参是引用数据类型(对象、数组、函数),则采用传引用调用。