函数中形参与实参的关系
对于形参和实参的定义,在 权威指南中有着明确的定义。但是,我们更在意的是它们之间的关系,到底形参会不会影响到实参?
形参到底会不会影响到实参?
对于这个问题的答案,请先看以下两个例子:
//例子一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 函数中形参与实参的关系
原文地址:https://www.cnblogs.com/blogs-xlf/p/10329333.html