参数的传递
我们都应该知道所谓的编程语言就是通过一系列的函数变换,实现数据的传输,变换,最终呈现出我们所需要的效果。可以说无论是什么编程语言数据的传递都是弥足珍贵的。可是我们在传输数据的过程中不能仅仅是简单的传输,我们需要一种载体来承接我们传输的内容,也就是我要说的参数。
参数有形参和实参之分,所谓的实参可以理解为实际参数,就是我们通过函数想要传递的内容,而形参呢?简单的说就是形式参数,就是一个桥梁,用它去接收我们传递过来的内容,并存入到储存单元中,然后释放形参。那么实参和形参是怎样传递的呢?在他们的传递过程中都发生了那些变化?都要遵循那些规则呢?
(1).参数的传递分为2种:
1.值传递
顾名思义,值传递就是把数值传递给形参,也就是说我们只需要随便拿出一个形参来接受这个值就好了,当我门在函数内部修改形参,比如形参的名字,是不会影响实参的数值的。
从例子中很容易看出,虽然改变了形参的内容,结果未发生任何变化。
2.引用传递
和值传递不同,引用传递传递的是内容的地址。在使用引用传递时,计算机是先找到这个实参的地址,然后把地址传递给形参,紧接着把地址下的数据依次传入到形参开辟的空间中去,所以说一旦我们的在函数内部修改了形参,计算机就无法找到对应的地址空间,这样输出的就不是我们所需要的数据。
(2).形参和实参的数目问题:
1.调用函数传递的实参必须与定义的形参的个数是对应的;(在JavaScript中没有这项要求)
2.超出形参数的实参不进行传递;
3.如果没有对应的实参传入,形参的类型定义为undefined;
所有的编程语言都需要满足这3带点特征,但是在JavaScript中,实参和形参的数量可以不对应。
(3).参数传递时主要应用的函数
arguments函数:在函数体内,标识符arguments是指向实参对象的引用,一旦我们把实参传递给形参是,就会创建一个arguments对象;它的作用就是把我们传递的参数,以数组的形式 存储在对像名为arguments的内存空间内,注意,arguments绝不是一个数组,他是一个对象。
arguments的应用:1.虽然他不是一个数组,但是我们仍然可以把它当做数组来理解,通过arguments我们可以获取里面的一个元素,或者获取传入实参的个数。
2.对于超出形参个数之外的实参,arguments同样接收超出的实参,并存储起来,这是就方便我们来调用其中的元素了。使用函数arguments[i] 来调用;
3.arguments.length函数是用来计算传递的实参个数;
4.argumrnts每个函数都会有,因此,arguments只会在自己内部找自身的arguments,无法引用到外层的arguments。
参数的传递基本的内容也就是这些了,只要理解清楚他的传送机制,我们在编写程序时就不会感觉手足无措了,认真的看完这篇文章,我想对于参数的传递机制,你会有一个更清楚的认识,不能说让你大彻大悟,但总会有一些收获。(ps:文章有些短,希望不要被告知移除博客首页啊!!!!)