引用类型作为函数参数何解

时间: 2019-01-03阅读: 1045标签: 函数

在向函数传递引用类型的参数时,相当于把引用类型的地址复制给函数内的一个局部变量,所以局部变量和传入的参数会指向内存中的同一个对象。  局部变量的变化也会映射到传入参数

function setAge(obj){
  obj.age = 20;      
}
var person = new Object();
setAge(person);
console.log(person.age); // 20


解释: 我们创建了person对象,但是我们创建的person并没有age属性,然后我们通过setAge方法给函数内的局部变量obj添加了age属性,但是函数内局部变量obj的变化会映射到传入参数,这说明两者在都指向内存中的同一个地址。

然而引用类型作为参数传递并不说明引用类型传参是按引用传参的

function setAge(person){
  obj.age = 20;
  obj = {
     age: 30
  };
}
var person = new Object();
setAge(person);
console.log(person.age); // 20


解释:我们在函数内让person重新指向一个新的对象,等于切断了函数内局部变量obj与传入参数person的联系,即局部变量指向一个新的地址。

如果是按引用类型传递的话,那么全局变量person就会与局部变量obj指向同一个地址,那么person.age也应为30,由于不是按引用传递的,所以全局变量person还是指向原来的地址


来自:https://www.cnblogs.com/jhaosun/archive/2019/01/03/params.html


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/1762

JS如何重写一个函数?

分享一些自己在开发上遇到的问题,比如我们页面上用了大量的打印语句,但是在某些时候,我们不想要了。我们删除这里的代码,如果太多了,那工作量太大好累,想想都不想干

ES6 Array.find()和findIndex()函数用法

ES6为Array增加了find(),findIndex函数。find()函数用来查找目标元素,找到就返回该元素,找不到返回undefined,而findIndex()函数也是查找目标元素,找到就返回元素的位置,找不到就返回-1。

javascript封装函数

使用函数有两步:1、定义函数,又叫声明函数, 封装函数。2、调用函数var 变量 = 函数名(实参);对函数的参数和返回值的理解

一个简单的函数消灭业务代码的低级错误

日常的前端开发业务代码中,我们经常都需要调试数据,所以要经常更改某些参数的初始化数据,或者更改过程中的数据。但是很多时候,改了数据调试完之后就忘记改回去了,某个调试的场景是依赖一个参数的修改还好

JS高阶函数reduce()的常用场景

reduce()语法:必需。初始值, 或者计算结束后的返回值。 数组求和;数组最大值;数组去重;计算数组中每个元素的出现的次数

Js函数拓展

箭头函数的作用域永远是定义时的作用域,因此不受严格模式,call,bind,apply方法的影响。 想改变箭头函数作用域:将箭头函数定义在一个普通函数中。想改变这个普通函数作用域,我们可以改变箭头函数的作用域

js中的立即执行函数的写法,立即执行函数作用是什么?

这篇文章主要讲解:js立即执行函数是什么?js使用立即执行函数有什么作用呢?js立即执行函数的写法有哪些?

js在excel的编写_excel支持使用JavaScript自定义函数编写

微软 称excel就实现面向开发者的功能,也就是说我们不仅可以全新定义的公式,还可以重新定义excel的内置函数,现在Excel自定义函数增加了使用 JavaScript 编写的支持,下面就简单介绍下如何使用js来编写excel自定义函数。

Extjs renderer函数

昨天提到了改变grid中 行的背景颜色,其实还有一个更简单的方法,就是利用renderer:function(){}函数,renderer 函数是一个拦截者模式,用于改变渲染到单元格的值和样式。

前端常用的js函数方法整理

判断js类型: js有自己判断方法 typeof 但是当他遇到引用类型的时候得到的结果往往不是我们想要的,有没有时候后台返回的参数是null或者undefined然后就被丢到了页面上,很难看,要每一个地方都去处理

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!