js 函数中形参与实参的关系

Posted =.=

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 函数中形参与实参的关系相关的知识,希望对你有一定的参考价值。

函数中形参与实参的关系

对于形参和实参的定义,在 权威指南中有着明确的定义。但是,我们更在意的是它们之间的关系,到底形参会不会影响到实参?

形参到底会不会影响到实参?

对于这个问题的答案,请先看以下两个例子:

//例子一
function add(x){
    x+=1;
};

var a = 1;
add(a);

console.log(a); //1 看来不会影响到实参

//例子二
function Push(arr){
arr.push(1);
}

var b = [];
Push(b);
console.log(b); //[1] 额。。。好像会影响到实参

看完上面的例子,多多少少会有一些疑惑,到底它们之间是什么关系?
笔者认为,形参和实参是存在一种引用关系的,就好比变量中的引用关系。我们都知道,变量中的引用关系跟它们的值有关。当值为原始类型时(string,number,boolean等等),var a=b是各自引用不同的内存地址的,修改不会影响到彼此;当值是对象,数组等非原始类型时,它们引用的是同一个内存地址,修改则会相互影响。所以上面例子中,当实参是数组时,由于它们共用同一内存地址,所以修改会影响彼此,这个在平时要多加注意!

笔者水平有限,上面仅是个人意见想法,如果有误,请指出。 ??


以上是关于js 函数中形参与实参的关系的主要内容,如果未能解决你的问题,请参考以下文章

关于Java中形参与实参的理解

函数的形参与实参

c语言中指针作为实参使用SWAP函数的问题。

28.Python:形参与实参

js_函数参数的相关问题

函数的参数