JS引用传递与值传递的区别与用法分析


Posted in Javascript onJune 01, 2018

本文实例讲述了JS引用传递与值传递的区别与用法。分享给大家供大家参考,具体如下:

这里详细解释JS值传递和引用传递以及二者的区别。

我们先来解释一下这两个的基本概念吧。

函数调用中,传递是一个数值,我们称为 “值传递”。
函数调用中,传递是对象,一般称为 “引用传递”。

现在这里总体上说明,这二者的本质区别就在于传递的数据类型不一样,值传递传递的是一个值,而引用传递传递的是一个对象。

看一下代码以及代码中的注释。

一、引入

function func(a)
{
  a++;
}
// 因为函数都没有调用,所以找不到 a
console.log(a);
//结果明显是undefined了。
//所以看下面两个例子。

二、值传递

var a = 5;
function func(a)
{
  // 函数中开辟了一个空间 a == 5
  // a==6
  a++;
}
func(5);
// 结果,函数没有改变到 外部 a 的值,所以,结果是 5
console.log(a);
// 函数调用中,传递是一个数值,我们称为 “值传递”
// 特点: 有多个不同的空间,空间都是在栈中的
//    所以 修改函数中的空间,对外部空间是没有影响的

三、引用传递

var a = 5;
function func()
{
  // 开辟函数 的空间
  // 函数中没有 a 的空间
  // 所以,系统会自动向外面搜索
  // 这里是对外部的变量进行修改
  a++;
}
func(5);
// 因为函数中修改了外部的变量 a,所以,值发生改变了,是 6
console.log(a);
// 函数调用中,传递是对象,一般称为 “引用传递”
// 特点: 实在存数据的空间只有一份

详细的说明我都在代码中注释说明了,欢迎指点指点指正。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
通过javascript设置css属性的代码
Dec 28 Javascript
Javascript面向对象编程(二) 构造函数的继承
Aug 28 Javascript
jquery中event对象属性与方法小结
Dec 18 Javascript
jQuery内置的AJAX功能和JSON的使用实例
Jul 27 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
Jun 03 Javascript
微信小程序 数组中的push与concat的区别
Jan 05 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
Jan 23 Javascript
Vue.js之slot深度复制详解
Mar 10 Javascript
轻量级JS Cookie插件js-cookie的使用方法
Mar 22 Javascript
Vue 3.x+axios跨域方案的踩坑指南
Jul 04 Javascript
JS简单表单验证功能完整示例
Jan 26 Javascript
vue设置全局访问接口API地址操作
Aug 14 Javascript
Express之托管静态文件的方法
Jun 01 #Javascript
纯JS实现出生日期[年月日]下拉菜单效果
Jun 01 #Javascript
详解Angular操作cookies方法
Jun 01 #Javascript
浅谈手写node可读流之流动模式
Jun 01 #Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
Jun 01 #Javascript
基于JS实现带动画效果的流程进度条
Jun 01 #Javascript
说说node中的可读流和可写流的区别
Jun 01 #Javascript
You might like
模拟flock实现文件锁定
2007/02/14 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
php 创建以UNIX时间戳命名的文件夹(示例代码)
2014/03/08 PHP
php遍历树的常用方法汇总
2015/06/18 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
php 利用socket发送GET,POST请求的实例代码
2020/07/04 PHP
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
jQuery插件 tabBox实现代码
2010/02/09 Javascript
vs2003 js文件编码问题的解决方法
2010/03/20 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
JQuery右键菜单插件ContextMenu使用指南
2014/12/19 Javascript
原生javascript实现addClass,removeClass,hasClass函数
2016/02/25 Javascript
js 中获取制定的cook信息实现方法
2016/11/19 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
详解vue-cli下ESlint 配置说明
2018/09/03 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
python中元类用法实例
2014/10/10 Python
利用Python如何生成随机密码
2016/04/20 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
外贸业务员岗位职责
2013/11/24 职场文书
建筑行业的大学生自我评价
2013/12/08 职场文书
商业融资计划书
2014/04/29 职场文书
美国留学经济担保书
2014/05/20 职场文书
朋友圈早安励志语录!
2019/07/08 职场文书
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL
Python中tqdm的使用和例子
2022/09/23 Python