怎样理解函数参数的传递

前言: 基本类型(数值 / 字符串 / 布尔值)和引用类型(对象)作为参数传递给函数时的行为是不一样的.

基本类型传递的是值的地址, 它在函数内部的改变不会影响到原变量.

引用类型传递的是引用的地址, 它在函数内部的改变实际上是对原变量的改变.

第一步: 下面演示基本类型的值做实参时的情况

function change(bol){
    bol = !bol;
    console.log(bol)
}

var a = true;
change(a); // false
console.log(a); // true;

注意: 这里在函数内部改变了形参的值, 但外部的a的值并没有发生改变. 这是基本类型的特征;

第二步: 下面演示引用类型的值做实参时的情况

function addName(obj) {
    obj.name = "Lilei";
    console.log(obj.name); // Lilei
}

var person = {};
addName(person); // Lilei
console.log(person.name); // Lilei

注意: 这里对象作为实参传递给函数时, 实际传递的是引用, 在函数内部操作的obj指向的内存地址实际上就是person指向的内存地址, 因此其改变会影响obj和person;

原文地址:https://www.cnblogs.com/aisowe/p/11634676.html

时间: 2024-10-05 05:58:30

怎样理解函数参数的传递的相关文章

(转载)你好,C++(26)如何与函数内部进行数据交换?5.1.3 函数参数的传递

你好,C++(26)如何与函数内部进行数据交换?5.1.3 函数参数的传递 5.1.3  函数参数的传递 我们知道,函数是用来完成某个功能的相对独立的一段代码.函数在完成这个功能的时候,往往需要外部数据的支持,这时就需要在调用这个函数时向它传递所需要的数据它才能完成这个功能获得结果.例如,当调用一个加法函数时,需要向它传递两个数作为加数和被加数,然后在它内部才能对这两个数进行计算获得加和结果.在定义一个函数的时候,如果这个函数需要跟外部进行数据交换,就需要在函数定义中加入形式参数表,以确定函数的

C语言入门(十三)函数参数的传递和值返回

 函数参数的传递和值返回  前言: 前面我们说的都是无参数无返回值的函数,实际程序中,我们经常使用到带参数有返回值的函数. 一.函数参数传递 1.形式参数和实际参数 函数的调用值把一些表达式作为参数传递给函数.函数定义中的参数是形式参数,函数的调用者提供给函数的参数叫实际参数.在函数调用之前,实际参数的值将被拷贝到这些形式参数中. 2.参数传递 先看一个例子: void a(int); /*注意函数声明的形式*/ main() { int num; scanf(%d,&num); a(num);

python 函数参数的传递(参数带星号的说明) 元组传递 字典传递

python 函数参数的传递(参数带星号的说明) 元组传递 字典传递 *arg 代表的是arg元祖,**kwd代表的是kwd名称的字典. 那函数传参数或是使用参数的时候,什么时候带*号什么时候不带*号呢?我这点总是理解不上来,或者说有点混乱.参考下面几个小函数,来理解下 >>> def a(*x): print (x) >>> def b(x): print(x) >>> def c(*x): print(*x) >>> x = (1

C# - 函数参数的传递

近段时间,有几个刚刚开始学习C#语言的爱好者问我:C#中的函数,其参数的传递,按值传递和按引用传递有什么区别.针对这一问题,我简单写了个示例程序,用以讲解,希望我没有把他们绕晕.因为,常听别人说起:“你不说我还明白,你一说,我就糊涂了”.     好,现在开始吧.     我们知道,在C#中,类型有值类型(例如int)和引用类型(例如string)之分,传递参数有按值传递和按引用传递之分.这样,简单的组合一下,我们可以得到以下几种传递方式:(1)按值传递值类型.(2)按值传递引用类型.(3)按引

react 函数参数的传递

js中函数参数的传递形式较为简单 function show(s){ console.log(s); } show(''hello);  就会输出hello. 在react JSX中函数参数的传递需要用到 bind 这里有个例子可以作为参考 http://www.jianshu.com/p/d745514e547b 需要注意的是得先定义this然后再使用,直接使用this会报错,函数为定义 需要通过bind方法来绑定参数,第一个参数指向this,第二个参数开始才是事件函数接收到的参数 下面这个例

转:python 函数参数的传递(参数带星号的说明)

python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要有四种方式:1.F(arg1,arg2,...)这 是最常见的定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义的函数在调用的的时候也必须在函数名后的小括号里提供个数相等的 值(实际参数),而且顺序必须相同,也就是说在这种调用方式中,形参和实参的个数必须一致,而且必须一一对应

Java中,函数参数的传递,是值传递还是引用传递

当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?  答:是值传递. 可以这么理解:有一个Person(name="S"),作为参数传给一个方法,在此方法中将此Person重新设置name=“B”,那么有一下结论 ①这个Person还是这个Person,一直都是他,但是他的名字被改了,不管是原来的引用还是方法里的引用,引用的都是一个对象,所以,所有引用的值都变了 ②如果在方法中重新new了一个Person赋给参数,

函数深入理解---函数的值传递

函数的值传递 //由于函数是对象,所以可以直接把函数参数传递进来 function callFun(fun,arg){ //第一个参数就是函数对象 return fun(arg); } function sum(num){ return num +100; } function say(str){ console.log('hi' + str); } //var say = x; //调用了say函数 callFun(say,'leo'); //调用了sum函数 console.log(call

python 函数参数多种传递方法

python进阶教程之函数参数的多种传递方法 我们已经接触过函数(function)的参数(arguments)传递.当时我们根据位置,传递对应的参数.我们将接触更多的参数传递方式.回忆一下位置传递:复制代码代码如下: def f(a,b,c): return a+b+cprint(f(1,2,3)) 在调用f时,1,2,3根据位置分别传递给了a,b,c.关键字传递有些情况下,用位置传递会感觉比较死板.关键字(keyword)传递是根据每个参数的名字传递参数.关键字并不用遵守位置的对应关系.依然