值传递:传递的是实际参数的一个副本。基本数据类型Undefined,Null,Boolean,Number、String都是值传递。

引用传递:传递的是实际参数的地址。引用数据类型Object,Array,Date, Function等都是引用传递。

var a = 10
function add(num){num+=10return num
}
add(a)
console.log(a)          //10
console.log(add(a))     //20

对于以上代码,a与函数内部的num互不干扰,它是按值传递的,复制了内存中的一份值给num,所以内部对num的操作不影响全局变量a的值。

对比以下三段代码,理解值传递和引用传递的区别。。。

var obj = {name:'tom',age:12
}
//引用传递
function test1(obj){obj.age++
}
test1(obj)
console.log(obj)    //{ name: 'tom', age: 13 }
var obj = {name:'tom',age:12
}
//值传递
function test2(obj){obj = null
}
test2(obj)
console.log(obj)    //{ name: 'tom', age: 12 }
var obj = {name:'tom',age:12
}
//值传递
function test3(obj){obj = {name:'tom',age:12}obj.age++
}
test3(obj)
console.log(obj)    //{ name: 'tom', age: 12 }

总结:值传递,内存中的地址复制了一份,修改数据指的是修改复制出来的内存地址,对原先的值不会有影响。引用传递,将其指向同一个内存地址,修改数据会对原先的值有影响。

三分钟让你掌握JavaScript中值传递和引用传递的区别相关推荐

  1. JavaScript中基本数据类型和引用数据类型的区别

    1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变 ...

  2. java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别

    [Java教程]JavaScript中值类型和引用类型的区别 0 2017-02-24 00:00:35 JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和 ...

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

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

  4. Java中值传递还是引用传递(三个例子说明)

    结论:Java中只有值传递 很多人困惑既然是值传递,为什么有的时候还能改变原对象属性呢? 值传递和引用传递区别:值传递会创建副本作为参数,而引用传递是直接作为参数 验证结论: 基本类型时 public ...

  5. javaScript中值传递和引用传递

    案例1 var str1 = "江西赣州于都县"; var number1 = 526.97; var b = true; var roles = ["建宁公主" ...

  6. JavaScript强化教程——对象的值传递和引用传递

    2019独角兽企业重金招聘Python工程师标准>>> 本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程--对象的值传递和引用传递 func ...

  7. html5有foreach吗,JavaScript中的map()和forEach()有什么区别?

    来源:https://medium.com/better-programming,作者:Moon,翻译:公众号<前端全栈开发者> JavaScript中一些最受欢迎的功能可能是map和fo ...

  8. JavaScript的值传递和引用传递

    原文: Explaining Value vs. Reference in Javascript 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原作者所有,翻译仅用于 ...

  9. Java中传参数--值传递和引用传递

    ** Java中传参数–值传递和引用传递 ** 在Java中,传参数分为值传递和引用传递. 在Java中的数据类型分为两大类:一类是引用类型,也叫类类型(除了String以外的所有复合数据类型,包括数 ...

最新文章

  1. 使用nodejs安装Vue-cli
  2. 当前(2019年)机器学习中有哪些研究方向特别的坑?
  3. IDEA忽略不必要提交的文件
  4. python --- 二分查找算法
  5. php 开启fsockopen函数,巧用php的fsockopen函数
  6. 素数对(信息学奥赛一本通-T1403)
  7. Azure IoT带来更高效的新能源生产和会看人脸色的无人超市
  8. C 语言实例 - 删除字符串中的特殊字符
  9. ssms 缺少索引信息_SQLServer索引重建
  10. 使用MVPArms框架时,访问网络没响应。
  11. 如何获取EasyCVR平台设备通道的RTMP视频流地址?
  12. 通知:大数据技术架构知识库公开
  13. 阿里重要开源项目汇总(更新中)
  14. 数学空间向量--两条异面直线距离,以及相交并垂直与两条直线的直线。
  15. 随处可见抢眼美女 TechED盛宴人潮汹涌
  16. 微信小程序应用开发赛作品综合开发记录——晋鹿文旅(云开发——概览)
  17. Day-8 bootstrap 徽章、进度条、分页、列表组
  18. Linux下存储多路径软件MultiPath源码分析
  19. 演讲达人成长记作者1月26日在西单图书大厦做讲座
  20. (1)1999~2021 年中国城市统计年鉴面板数据(含地级市面板、县级市面板和主要指标)(2)香港统计年刊(3)第一到第七次的人口普查数据(4)全国省市县-五六七普人口数据(5)国际统计年鉴

热门文章

  1. mysql使用条件限制乐观锁_使用Mysql乐观锁解决并发问题
  2. centos 7 下 rabbitmq 3.8.0 erlang 22.1 源码编译安装
  3. 关键词是用分号还是逗号隔开_逗号、顿号、分号、冒号、破折号的用法
  4. 信安教程第二版-第23章云计算安全需求分析与安全保护工程
  5. unity 查找所以物体_用Unity来实现一下绳子效果——Obi Rope插件介绍
  6. 操作系统:进程间的相互作用(多线程基础)
  7. Java线程之CompletionService批处理任务
  8. nodejs mac启动相关命令
  9. 重置一个画面大小的方法
  10. Prism4文档翻译(第九章 第二部分)