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

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还是指向原来的地址

参考自: JavaScript高级程序设计第3版

转载于:https://www.cnblogs.com/jhaosun/p/params.html

引用类型作为函数参数何解相关推荐

  1. PHP date函数参数详解

    PHP date函数参数详解 作者: 字体:[增加 减小] 类型:转载 time()在PHP中是得到一个数字,这个数字表示从1970-01-01到现在共走了多少秒,很奇怪吧  不过这样方便计算, 要找 ...

  2. java调用js匿名函数参数,js匿名函数作为函数参数详解

    由衷的感叹,js真是烦. 学到现在,渐渐理解了什么是:语言都是通用的,没有好不好,只有擅长不擅长. 继承,多态,甚至指针,c能实现,c++,java有,javascript(和java是雷锋和雷峰塔的 ...

  3. matlab melbankm,Matlab v_melbankm函数参数详解(英文附例)

    Matlab v_melbankm函数参数详解(英文附例) 笔者使用的是R2019的matlab,下载了voicebox安装至matlab路径下即可使用.下载voicebox请参看此博客 需要注意的是 ...

  4. ioctl 函数 参数 详解

    2019独角兽企业重金招聘Python工程师标准>>> ioctl 函数 参数 详解 2009-04-24 11:55 ioctl函数 本函数影响由fd参数引用的一个打开的文件. # ...

  5. 定义一个没有参数的函数、输出python3次_Python函数参数详解,三天让你掌握python,不再是小白

    原标题:Python函数参数详解,三天让你掌握python,不再是小白 引言 随着程序功能的增多,代码量随之增大,此时仍不加区分地把所有功能的实现代码放到一起,将会使得程序的组织结构不清晰,可读性变差 ...

  6. ES6函数参数的解构赋值,以及2种设置参数默认值方法的区别

    文章目录 1. 函数参数的解构赋值方式 2. 函数参数解构设置参数默认值 1. 方法1 2. 方法2 3. 总结 1. 函数参数的解构赋值方式 下面代码中,函数add的参数表面上是一个数组,但在传入参 ...

  7. Matlab mfcc函数参数详解(英文附例)

    Matlab mfcc函数参数详解 其实可以直接打开源代码看哈. %MFCC Extract the mfcc, log-energy, delta, and delta-delta of audio ...

  8. python传入参数加星号_Python 带星号(* 或 **)的函数参数详解

    1. 带默认值的参数 在了解带星号(*)的参数之前,先看下带有默认值的参数,函数定义如下: >> def defaultValueArgs(common, defaultStr = &qu ...

  9. Matlab v_melcepst函数参数详解(英文附例)

    Matlab v_melcepst函数参数详解(英文附例) 笔者使用的是R2019的matlab,下载了voicebox安装至matlab路径下即可使用.下载voicebox请参看此博客 需要注意的是 ...

最新文章

  1. 联想r720内存频率_联想 IdeaPad14s 2020 轻薄本双十一促销
  2. java native方法体在哪_java中native方法的使用
  3. 【CTF大赛】陇剑杯-机密内存-解题过程分析
  4. research paper for management science
  5. 三件套都有什么_床上用品三件套、四件套、21件套都各指什么啊?
  6. 文件写入的6种方法,这种方法性能最好
  7. HTML-HTML基本语法和标签
  8. fullpage在vue单页面当中使用会出现的问题以及解决办法
  9. Java读带有BOM的UTF-8文件乱码原因及解决方法(转)
  10. MonGoDB 常见操作, 设置管理员和用户登入
  11. mysql4语法_4 MySQL 语法技巧
  12. 从零实现深度学习框架——逻辑回归中的数值稳定
  13. 3d游戏计算机硬件配置方案,做三维如何配电脑?内容创作者配置推荐
  14. wkt文件java解析_WKT文件解析 以及各个投影坐标的wkt参数查询
  15. java获取字符串的最后一个字符_如何获取字符串的最后一个字符
  16. 南澳大学计算机科学专业学费,澳洲南澳大学生活费
  17. iOS开发常用设计模式
  18. Netty 通过 WebSocket 编程实现服务器和客户端全双工长连接<2021SC@SDUSC>
  19. pyecharts图表库学习:Pie(饼图)
  20. PageOffice国产版(统信UOS操作系统)与Window版的区别

热门文章

  1. 长春好的计算机编程学校,长春小学生学习编程
  2. 制作XP一键安装光盘
  3. CVPR 2022 | 网易华科提出特征采样与分组:基于Transformer的场景文字检测方法
  4. c++代码静态检查工具——cpplint使用技巧
  5. 西门子S7-300PLC亮红灯SF故障消除操作建议
  6. 关于qq被盗问题.....
  7. Java 中canonical name, simple name and class name 的区别
  8. ram和flash的区别, SSD寿命, SSD和HHD速度比较, SSD和RAM速度比较
  9. 打砖块小游戏php程序,javascript实现打砖块小游戏(附完整源码)
  10. 如何隐藏您的 WordPress 网站上的联盟链接