码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2019-01-28 12:10:52      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:内存   是什么   code   实参   函数   原始类型   定义   class   str   

函数中形参与实参的关系

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

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

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

//例子一
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 函数中形参与实参的关系

标签:内存   是什么   code   实参   函数   原始类型   定义   class   str   

原文地址:https://www.cnblogs.com/blogs-xlf/p/10329333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!