函数传参数(深度解析)

给你一囗甜甜゛ 提交于 2019-12-01 09:55:28

首先几个比较重要的概念
1.ECMAscript中所有函数的参数是按照值传递的,也就是外部的值复制给函数内部参数

  • 基本类型的值传递就是复制一个副本进去
  • 引用型也是复制进去,但是是复制引用类型的一个值的地址(引用类型的值是储存在堆内存中,js不允许直接访问内存中的位置,也就是不能直接操作对象的内存空间,在操作时候实际是操作对象的引用而不是实际的对象。因此,引用类型的值是按照引用访问的)
    function setName(obj) {
      //obj =  arguments[0] = person 此时传递进来一个值的地址(此时你交了一个女朋友)
        obj.name = "Nicholas"; //因为是引用类型,obj的值发生改变,person也改变(你给女朋友买了件阿玛尼的外套) 
        obj = new Object(); //obj =  arguments[0] = new Object() 此时传递进来一个值的地址!(你交了一个新女朋友)
        obj.name = "Greg";// 你给新女友买了件爱马仕的内裤
    }
    
    var person = new Object();
    setName(person); //你把前女友带进商场
    alert(person.name)//提问你给前女友买的啥

     

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!