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监测ActiveX控件是否已经安装过的代码
Sep 02 Javascript
JQuery 学习笔记 选择器之一
Jul 23 Javascript
Google Map API更新实现用户自定义标注坐标
Jul 29 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
Nov 28 Javascript
JS子父窗口互相操作取值赋值的方法介绍
May 11 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
Sep 09 Javascript
三分钟带你玩转jQuery.noConflict()
Feb 15 Javascript
深入理解JS正则表达式---分组
Jul 18 Javascript
jQuery EasyUI API 中文帮助文档和扩展实例
Aug 01 Javascript
JavaScript数据结构中栈的应用之表达式求值问题详解
Apr 11 Javascript
实例详解Node.js 函数
Jun 10 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
Jul 24 jQuery
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
PHP删除数组中空值的方法介绍
2014/04/14 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
教你在header中隐藏php的版本信息
2016/08/10 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
laypage分页控件使用实例详解
2016/05/19 Javascript
Radio 单选JS动态添加的选项onchange事件无效的解决方法
2016/12/12 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
详解如何运行vue项目
2019/04/15 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
Javascript中window.name属性详解
2020/11/19 Javascript
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
python cs架构实现简单文件传输
2020/03/20 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
HTML5本地存储localStorage、sessionStorage基本用法、遍历操作、异常处理等
2014/05/08 HTML / CSS
印度尼西亚值得信赖的第一家网店:Bhinneka
2018/07/16 全球购物
工作人员思想汇报
2014/01/09 职场文书
经销商培训邀请函
2014/01/21 职场文书
商场消防安全责任书
2014/07/29 职场文书
物业保安辞职信
2015/05/12 职场文书
Vue过滤器(filter)实现及应用场景详解
2021/06/15 Vue.js
Java 在线考试云平台的实现
2021/11/23 Java/Android