zoukankan      html  css  js  c++  java
  • 再次学习javascript中的參数传递

     javascript中的全部函数的參数传递都是依照值传递的,做了以下測试:

      

    function addTen(num){
    	num +=10;
    	return num;
    }
    
    var count = 20;
    var result = addTen(count);
    alert(cont);		//20
    alert(result);	//30
      好吧。上面仅仅是做了基本类型的传递,再做个引用类型的传递看看:

    function setName(obj){
    	obj.name="Mark";
    }
    
    var person = new Object();
    setName(person);
    alert(person.name);		//Mark
    这样看起来是引用传递,不是值传递,那么再做个測试:

    function setName(obj){
    	obj.name="Mark";
    	obj = new Object();
    	obj.name = "David";
    }
    
    var person = new Object();
    setName(person);
    alert(person.name);		//Mark
    这个样例与前面一个样例的唯一的差别就是在setName()的函数后面添加 了两行代码:一行代码为obj又一次定义了个对象。还有一行代码为该对象定义了一个带有不同值的name属性。在把persion传递给setName()函数后,其name属性被设置为Mark,然后将一个新对象赋值给obj,同一时候其name属性设置为David。假设person是依照引用传递的,那么person就会自己主动被改动为指向其name属性值为David的新对象。可是,当接下再訪问person.name时。显示的值仍是Mark。这说明即使在函数内部改动了參数的值。但原始的引用仍然保持未变。实际上。当在函数内部重写obj时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数运行完后被销毁。


  • 相关阅读:
    8.【原创】使用Java8中的Stream特性筛选数据
    27.【转载】如何避免回表查询,什么是索引覆盖
    17.【转载】广东省2020学位英语考试报考须知
    Java 正则?:?=?!的理解
    集合的优化操作
    ArrayList中remove方法和set(null)的区别
    POI 导入、导出Excel
    JS 跳转到新页面并用post传参
    win 10 如何关闭自动更新
    JSON定义及应用
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/9944851.html
Copyright © 2011-2022 走看看