对于形参和实参的定义,在 权威指南中有着明确的定义。但是,我们更在意的是它们之间的关系,到底形参会不会影响到实参?
对于这个问题的答案,请先看以下两个例子:
//例子一 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
是各自引用不同的内存地址的,修改不会影响到彼此;当值是对象,数组等非原始类型时,它们引用的是同一个内存地址,修改则会相互影响。所以上面例子中,当实参是数组时,由于它们共用同一内存地址,所以修改会影响彼此,这个在平时要多加注意!
笔者水平有限,上面仅是个人意见想法,如果有误,请指出。
您可能感兴趣的文章:
如对本文有疑问, 点击进行留言回复!!
MFC的静态库.lib、动态库.dll(包含引入库.lib)以及Unicode库示例
CTF 刷题记录(一) 白云新闻搜索(手动与自动化SQL注入)
javascript如何使用函数random来实现课堂随机点名方法详解
网友评论