js函数参数传递基本数据类型和引用数据类型的不同

js函数参数传递基本数据类型和引用数据类型的不同

之前提到函数的参数分为形参、实参两种,形参是用来函数定义是设接收调用传入,实参是用来函数调用时传入小括号里面的真实数据。

函数在传递参数时,可以传入两种数据类型,一种是基本数据类型,另一种是引用数据类型,其不同表现形式如下。

1、参数传入基本数据类型是按值传递

		var a = 10;
        var b = 20;
        function test(a,b){
    
    
            // a,b 形参  将全局下的a,b 复制一份 不会改变全局下的a和b
            a = a++;
            b = b++;
            console.log(a,b); //11  21
        }
        test(a,b);
        console.log(a,b);//10 20 

这个例子在调用时传入了a和b,这两个参数的传入可以看做分别为数值10和20传入了函数,在函数体内a和b自加了一,所以函数体内输出11和21,但并未改变a和b变量的值,所以在外面输出10和20。

2、参数传入引用数据类型按地址传递

	    var obj = {
    
    
            a:1,
            b:2
        }
        // 按地址传递
        function test4(parm){
    
    
            // parm  obj的地址  通过obj的地址找到对应的属性 操作的是属性的本身
            parm.a++;
            parm.b++;
            console.log(parm.a,parm.b);// 2 3 
        }
        test4(obj);
        console.log(obj.a,obj.b); // 2 3 

这个例子在传入参数时传入的obj是引用数据类型,函数体中parm.a++为obj.a++。其中obj.a相当于是指针,指向obj.a这个地址,改变了obj对象的a的值,所以在函数体中和函数体外都是输出2和3.

猜你喜欢

转载自blog.csdn.net/yun_shuo/article/details/114270585