三分钟让你掌握JavaScript中值传递和引用传递的区别
值传递:传递的是实际参数的一个副本。基本数据类型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中值传递和引用传递的区别相关推荐
- JavaScript中基本数据类型和引用数据类型的区别
1.基本数据类型和引用数据类型 ECMAScript包括两个不同类型的值:基本数据类型和引用数据类型. 基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象. 当我们把变量赋值给一个变 ...
- java引用类型和值类型_[Java教程]JavaScript中值类型和引用类型的区别
[Java教程]JavaScript中值类型和引用类型的区别 0 2017-02-24 00:00:35 JavaScript的数据类型分为两类:原始类型和对象类型.其中,原始类型包括:数字.字符串和 ...
- c语言 函数参数传递 值传递,c语言中函数参数的三种传递方式——值传递、指针传递、引用传递...
函数参数有三种传递方式值传递.指针传递.引用传递. 1.值传递 将已经初始化的变量值(或常量)传递到函数中. 例如: int func(int value) { int ret = value++; ...
- Java中值传递还是引用传递(三个例子说明)
结论:Java中只有值传递 很多人困惑既然是值传递,为什么有的时候还能改变原对象属性呢? 值传递和引用传递区别:值传递会创建副本作为参数,而引用传递是直接作为参数 验证结论: 基本类型时 public ...
- javaScript中值传递和引用传递
案例1 var str1 = "江西赣州于都县"; var number1 = 526.97; var b = true; var roles = ["建宁公主" ...
- JavaScript强化教程——对象的值传递和引用传递
2019独角兽企业重金招聘Python工程师标准>>> 本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程--对象的值传递和引用传递 func ...
- html5有foreach吗,JavaScript中的map()和forEach()有什么区别?
来源:https://medium.com/better-programming,作者:Moon,翻译:公众号<前端全栈开发者> JavaScript中一些最受欢迎的功能可能是map和fo ...
- JavaScript的值传递和引用传递
原文: Explaining Value vs. Reference in Javascript 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原作者所有,翻译仅用于 ...
- Java中传参数--值传递和引用传递
** Java中传参数–值传递和引用传递 ** 在Java中,传参数分为值传递和引用传递. 在Java中的数据类型分为两大类:一类是引用类型,也叫类类型(除了String以外的所有复合数据类型,包括数 ...
最新文章
- 使用nodejs安装Vue-cli
- 当前(2019年)机器学习中有哪些研究方向特别的坑?
- IDEA忽略不必要提交的文件
- python --- 二分查找算法
- php 开启fsockopen函数,巧用php的fsockopen函数
- 素数对(信息学奥赛一本通-T1403)
- Azure IoT带来更高效的新能源生产和会看人脸色的无人超市
- C 语言实例 - 删除字符串中的特殊字符
- ssms 缺少索引信息_SQLServer索引重建
- 使用MVPArms框架时,访问网络没响应。
- 如何获取EasyCVR平台设备通道的RTMP视频流地址?
- 通知:大数据技术架构知识库公开
- 阿里重要开源项目汇总(更新中)
- 数学空间向量--两条异面直线距离,以及相交并垂直与两条直线的直线。
- 随处可见抢眼美女 TechED盛宴人潮汹涌
- 微信小程序应用开发赛作品综合开发记录——晋鹿文旅(云开发——概览)
- Day-8 bootstrap 徽章、进度条、分页、列表组
- Linux下存储多路径软件MultiPath源码分析
- 演讲达人成长记作者1月26日在西单图书大厦做讲座
- (1)1999~2021 年中国城市统计年鉴面板数据(含地级市面板、县级市面板和主要指标)(2)香港统计年刊(3)第一到第七次的人口普查数据(4)全国省市县-五六七普人口数据(5)国际统计年鉴
热门文章
- mysql使用条件限制乐观锁_使用Mysql乐观锁解决并发问题
- centos 7 下 rabbitmq 3.8.0 erlang 22.1 源码编译安装
- 关键词是用分号还是逗号隔开_逗号、顿号、分号、冒号、破折号的用法
- 信安教程第二版-第23章云计算安全需求分析与安全保护工程
- unity 查找所以物体_用Unity来实现一下绳子效果——Obi Rope插件介绍
- 操作系统:进程间的相互作用(多线程基础)
- Java线程之CompletionService批处理任务
- nodejs mac启动相关命令
- 重置一个画面大小的方法
- Prism4文档翻译(第九章 第二部分)