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 相关文章推荐
JS写的贪吃蛇游戏(个人练习)
Jul 08 Javascript
jQuery的DOM操作之删除节点示例
Jan 03 Javascript
jquery基础教程之deferred对象使用方法
Jan 22 Javascript
JavaScript中实现依赖注入的思路分享
Jan 15 Javascript
JS实现动态生成表格并提交表格数据向后端
Nov 25 Javascript
jQuery动态改变多行文本框高度的方法
Sep 07 Javascript
js实现移动端编辑添加地址【模仿京东】
Apr 28 Javascript
js实现京东轮播图效果
Jun 30 Javascript
cordova入门基础教程及使用中遇到的一些问题总结
Nov 14 Javascript
vue、react等单页面项目应该这样子部署到服务器
Jan 03 Javascript
JS简单判断是否在微信浏览器打开的方法示例
Jan 08 Javascript
在react-antd中弹出层form内容传递给父组件的操作
Oct 24 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
frename PHP 灵活文件命名函数 frename
2009/09/09 PHP
php学习之流程控制实现代码
2011/06/09 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
简单说说PHP优化那些事(经验分享)
2014/11/27 PHP
php实现简单文件下载的方法
2015/01/30 PHP
PHP实现RTX发送消息提醒的实例代码
2017/01/03 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
2010/04/13 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
jquery判断浏览器类型的代码
2012/11/05 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
JS动态添加iframe的代码
2015/09/14 Javascript
JS JSOP跨域请求实例详解
2016/07/04 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
JS正则替换去空格的方法
2017/03/24 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
JavaScript 隐性类型转换步骤浅析
2018/03/15 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
[01:51]历届DOTA2国际邀请赛举办地回顾 TI9落地上海
2018/08/26 DOTA
python生成随机密码或随机字符串的方法
2015/07/03 Python
使用Python处理Excel表格的简单方法
2018/06/07 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
Python分析彩票记录并预测中奖号码过程详解
2019/07/09 Python
python求绝对值的三种方法小结
2019/12/04 Python
python 命名规范知识点汇总
2020/02/14 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
python 实现波浪滤镜特效
2020/12/02 Python
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
珍惜资源的建议书
2014/08/26 职场文书
台风停课通知
2015/04/24 职场文书
2015年街道除四害工作总结
2015/05/15 职场文书
荒岛余生观后感
2015/06/09 职场文书
优秀大学生申请书
2019/06/24 职场文书