2019独角兽企业重金招聘Python工程师标准>>>

js中函数参数值传递和引用传递:
在阅读本章节之前建议参阅一下两章节:
1.值类型可以参阅javascript的值类型一章节。
2.引用类型可以参阅javascript的引用类型一章节。
一.函数传递值类型:
代码实例如下:

function addNum(num)
{ num+=10; return num;
}
var num=10;
var result=addNum(num);
console.log(num);
console.log(result);

以上代码的弹出值分别为:10和20,下面进行一下分析:
声明变量num并复制为10,这个是num是一个值类型,当为函数传递参数的时候,是将此值复制一份传递给函数,所以在函数执行之后,num本身的值并没有被改变,函数中被改变的值仅仅是一个副本而已。
二.函数传递引用类型:

function setName(obj)
{ obj.name="青岛新锐";
}
var web=new Object();
web.name="蚂蚁部落";
setName(web);
console.log(web.name);

以上代码的弹出值是:“青岛新锐”,下面进行一下分析:
声明一个对象web,它是一个引用类型,当为函数传递参数的时候,是传递的web对象的引用,也就是此对象的内存地址,所以在函数中修改属性的对象就是函数外面创建的对象本身。
三.加深理解:

function setName(obj)
{ obj.name="青岛新锐"; obj=new Object(); obj.name="蚂蚁部落";
}
var web=new Object();
setName(web);
console.log(web.name);

以上代码的弹出值是:青岛新锐,很多人可能会以为将会弹出“蚂蚁部落”,下面进行一下简单的分析:
在函数外面创建一个对象,并将对象的引用赋值给变量web,web中存储的是对象在内存中的存储地址,当为函数传递参数时,就是传递的在函数外面创建的对象的地址。在函数中,为外面创建的对象创建一个自定义属性name并赋值为“青岛新锐”,然后又创建一个新的对象,并将新对象的地址赋值给obj,这个时候obj指向的并不是函数外面创建的对象,所以外面对象name属性不会被改变。

函数内创建object对象不会改变外面的属性值 web.name直接读取函数的属性

原文地址是:http://www.softwhy.com/forum.php?mod=viewthread&tid=9052

更多内容可以参阅:http://www.softwhy.com/javascript/

转载于:https://my.oschina.net/airship/blog/853822

js中函数参数值传递和引用传递相关推荐

  1. JS中函数传参按照值传递

    ES语法中所有函数的参数都是按值传递的. 探讨函数参数按值传递问题: //1.参数被赋值为原始值 function add(num){num += 10;return num; } let count ...

  2. 一个 js 中值传递和引用传递的坑。

    今天在调试代码时遇到一个问题,刚开始想不明白,然后分析了一下后,才知道其中的问题,这也是一个基础的问题,(所以基础是很重要的) 代码如下: var a = 3; a = a * 2; console. ...

  3. JS函数传参时:值传递与引用传递的区别

    JS函数传参时:值传递与引用传递的区别 一.先分析基础数据与复杂数据的区别 : 基本数据类型:Undefined.Null.Boolean.Number.String 引用数据类型:对象 如:var ...

  4. 论JS函数传参时:值传递与引用传递的区别

    JS函数传参时:值传递与引用传递的区别? 值传递:值传递的数据为基本数据类型,基本数据类型在内存中存放的是数值本身:值传递为单向传递,只能由实参传递给形参. 引用传递:引用传递的数据为复杂数据类型,复 ...

  5. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

  6. c语言 函数参数传递 值传递,c语言中函数参数的三种传递方式——值传递、指针传递、引用传递...

    函数参数有三种传递方式值传递.指针传递.引用传递. 1.值传递 将已经初始化的变量值(或常量)传递到函数中. 例如: int func(int value) { int ret = value++; ...

  7. 一文彻底搞懂Java中的值传递和引用传递!

    关于Java中方法间的参数传递到底是怎样的.为什么很多人说Java只有值传递等问题,一直困惑着很多人,甚至我在面试的时候问过很多有丰富经验的开发者,他们也很难解释的很清楚. 我很久也写过一篇文章,我当 ...

  8. Javascript 之《函数传参到底是值传递还是引用传递》

    前言 这个问题其实困惑了我好久,但是在实际使用中总是得过且过,不想去深究.由于这种态度,在学习 Javascript 过程中,水平一直都是出于半桶水状态,很多概念和原理似懂非懂,模糊不清. 所以,写了 ...

  9. python函数参数的引用传递_Python初学者笔记(八):函数参数的值传递和引用传递...

    函数参数的值传递和引用传递 像我们最熟悉的 C 语言,再写函数参数的同时需要规定函数参数到底是值传递还是引用传递.引用传递导致该参数在函数内的修改出了函数之外也会生效,值传递所有的修改都不会体现到函数 ...

最新文章

  1. 爱丁堡大学人工智能和计算机科学研究生申请入口
  2. Pod详解-资源配额
  3. 面试篇---1 如何区分深拷贝与浅拷贝
  4. 七牛云注册创建oss并配置自定义域名
  5. 和nginx比较_谈谈Nginx和LVS各自的优缺点以及使用
  6. 使用librtmp推h264、aac实时流
  7. 【5G学习笔记-8】38.306 36.306 User Equipment (UE) radio access capabilities 以及终端CDRX能力上报 featureGroupIndic
  8. pkg打包node项目文件
  9. 马克维茨组合matlab,马克维茨投资组合模型的matlab计算.pdf
  10. P6070 『MdOI R1』Decrease
  11. 用 MeGUI 压制 BDrip
  12. python编程 个人所得税计算器
  13. 影响我一生的两本书(02)_huadingjin_新浪博客
  14. 【jms】Listener method could not be invoked with incoming message
  15. C语言decompose函数,R语言时间序列应用(decompose、Holt-Winters初步)
  16. 腾讯和蘑菇街的面试总结
  17. 商业智能中的决策, 数据和数据处理方法
  18. 扎心“我学了六个月 Python,怎么还是会找不到工作”
  19. el-input-number 默认值设置失效
  20. QK Read, développer des habitudes de lecture

热门文章

  1. 【十】JDBC:使用 jmeter 批量在数据库创建 1 万多条数据;批量删除重复数据
  2. jupyter notebook 安装教程
  3. 对称加密、非对称加密深度解析
  4. 跨域解决方案之—JSONP
  5. Excel 枢纽图(Pivot)快速入门与示例
  6. 上海计算机二级python难吗_计算机二级难吗?
  7. 15年3月c语言试卷,2015年3月计算机二级C语言试卷及答案..doc
  8. c语言除法在全局区,深入C语言内存区域分配(进程的各个段)详解
  9. VSCode配置Python开发环境
  10. java 获取对象的大小限制_Java - 如何获取对象大小