zoukankan      html  css  js  c++  java
  • 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>
    

      

     

  • 相关阅读:
    Spring总结九:事务管理机制
    Spring总结七:AOP动态代理的实现
    Spring总结六:AOP(面向切面编程)
    Nginx静态网站的部署
    Spring总结五:小结 使用spring访问servlet
    javascript 的dateObj.getTime() 在为C#的获取方式
    操作JavaScript数组
    判断是否是对象的原型
    JavaScript判断对象 是什么类型的.
    Javascript中类型: undefined, number ,string ,object ,boolean
  • 原文地址:https://www.cnblogs.com/Helen-code/p/11988616.html
Copyright © 2011-2022 走看看