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 学习笔记(十一)
Jan 19 Javascript
js打印纸函数代码(递归)
Jun 18 Javascript
jQuery焦点图切换特效代码分享
Sep 15 Javascript
详解javascript数组去重问题
Nov 06 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
Jun 25 Javascript
javascript的函数劫持浅析
Sep 26 Javascript
jquery加载单文件vue组件的方法
Jun 20 jQuery
JS使用正则表达式验证身份证号码
Jun 23 Javascript
Vue 动态设置路由参数的案例分析
Apr 24 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
Aug 12 Javascript
JavaScript函数IIFE使用详解
Oct 21 Javascript
js 数据类型判断的方法
Dec 03 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
php出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
php fread读取文件注意事项
2016/09/24 PHP
ext 代码生成器
2009/08/07 Javascript
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
js计算精度问题小结
2013/04/22 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
2015/04/14 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
JS中多步骤多分步的StepJump组件实例详解
2016/04/01 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
JavaScript学习笔记整理_简单实现枚举类型,扑克牌应用
2016/09/19 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
原生JS实现自定义滚动条效果
2020/10/27 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
es6 symbol的实现方法示例
2019/04/02 Javascript
Electron+vue从零开始打造一个本地播放器的方法示例
2020/10/27 Javascript
python socket 超时设置 errno 10054
2014/07/01 Python
一文总结学习Python的14张思维导图
2017/10/17 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
儿童学习python的一些小技巧
2018/05/27 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
django 利用Q对象与F对象进行查询的实现
2020/05/15 Python
社会实践心得体会
2014/01/03 职场文书
九年级数学教学反思
2014/02/02 职场文书
六个一活动实施方案
2014/03/21 职场文书
县政府办公室领导班子对照检查材料思想汇报
2014/09/28 职场文书
见习报告怎么写
2014/10/31 职场文书
Python基础之元类详解
2021/04/29 Python