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 对象的属性和方法4种不同的类型
Mar 19 Javascript
javascript实现俄罗斯方块游戏的思路和方法
Apr 27 Javascript
javascript实现点击提交按钮后显示loading的方法
Jul 03 Javascript
javascript针对不确定函数的执行方法
Dec 16 Javascript
AngularJs学习第五篇从Controller控制器谈谈$scope作用域
Jun 08 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
Jul 14 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
Aug 01 Javascript
JQuery动态添加Select的Option元素实现方法
Aug 29 Javascript
jQuery实现图片轮播效果代码
Sep 27 Javascript
jquery插件bootstrapValidator表单验证详解
Dec 15 Javascript
手写简单的jQuery雪花飘落效果实例
Apr 22 jQuery
浅谈vue项目打包优化策略
Sep 29 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.ini实现PHP文件上传功能
2014/11/27 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
基于Javascript实现倒计时功能
2016/02/22 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
jQuery实现图片轮播效果代码
2016/09/27 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
微信小程序引用公共js里的方法的实例详解
2017/08/17 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
JS实现的计数排序与基数排序算法示例
2017/12/04 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
d3.js实现图形拖拽
2019/12/19 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
2018/07/09 Python
Python中的集合介绍
2019/01/28 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
怎么样写好简历中的自我评价
2013/10/25 职场文书
网站设计师的岗位职责
2013/11/21 职场文书
会计专业导师推荐信
2014/03/08 职场文书
加入学生会自荐书
2015/03/05 职场文书
年度考核表个人总结
2015/03/06 职场文书
未中标通知书
2015/04/17 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
2015年会计年终工作总结
2015/05/26 职场文书
幼儿园春季开学通知
2015/07/16 职场文书
股权投资协议书
2016/03/23 职场文书
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js