• JS-04 JS中的函数都是按值传递的


    JS中的函数都是按值传递的

    1.传递参数是基本类型

    如例子:基本类型传入函数后,函数内部参数生成一个参数副本,把num变量的值赋给num参数,num参数再去参与函数中的运算,但不会影响外面num变量的值。

    	<script>
    		var num= 10;
    		changeNum(num);
    
    		function changeNum(num){
    			num++;
    		console.log(num); //11
    		}
    		
    		console.log(num); //10
    	</script>
    

    2,引用类型(一个对象)当作参数传入函数后呢?  

    例一:当调用函数时,把per的内存地址传递给setName的参数obj,这时候obj和per都指向一个对象,obj给对象新增了一个name属性,per同样也能使用该属性。

    function setName(obj){
        obj.name = 'Helen';
    }
    var per = new Object();
    setName(per);
    console.log(per.name) //Helen
    

     例二:再来个复杂点的例子

    首先定义两个函数,第一个函数是Person构造函数

    1. 第一句通过构造函数Person实例化一个对象per,这个对象的name属性是小强
    2. 第二句调用f1函数,把per这个内存地址传递给f1的参数obj,这样obj和per都指向了同一个对象
    3. 然后obj修改该对象的name属性为小明,于是per的name属性也变成了小明。
    4. obj重新指向一个新的实例化对象,它的name属性值是“小红”,这个对象和上一个没有任何关系(这句是用来迷惑我们的)。
    	<script>
    		function Person(name,age){
    			this.name = name;
    			this.age = age;
    		}
    
    		function f1(obj){
    			obj.name = '小明';
    			obj= new Person('小红',18);
    		}
    
    		var per = new Person('小强',20);
    		console.log(per.name); //小强
    		f1(per);
    		console.log(per.name); //小明
    	</script>
    

      

     

  • 相关阅读:
    窗口设置背景图片
    双链表
    单链表
    Hough直线检测
    轮廓跟踪
    轮廓提取
    基于腐蚀的二值图像距离变换
    创建对话框用于交互
    hello world
    c#---params参数
  • 原文地址:https://www.cnblogs.com/Helen-code/p/11988616.html
Copyright © 2020-2023  润新知