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 相关文章推荐
jQuery开发者都需要知道的5个小技巧
Jan 08 Javascript
javascript 从if else 到 switch case 再到抽象
Jul 17 Javascript
文字不间断滚动(上下左右)实例代码
Apr 21 Javascript
js/html光标定位的实现代码
Sep 23 Javascript
jQuery插件Tmpl的简单使用方法
Apr 27 Javascript
浅谈javascript函数式编程
Sep 06 Javascript
Jquery表单验证失败后不提交的解决方法
Oct 18 Javascript
jQuery插件扩展实例【添加回调函数】
Nov 26 Javascript
Vue.js 中的 $watch使用方法
May 25 Javascript
JS实现换肤功能的方法实例详解
Jan 30 Javascript
node删除、复制文件或文件夹示例代码
Aug 13 Javascript
vue实现列表垂直无缝滚动
Apr 08 Vue.js
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
帅气的琦玉老师
2020/03/02 日漫
如何使用PHP中的字符串函数
2006/10/09 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
PHP重载基础知识回顾
2020/09/10 PHP
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
JS判定是否原生方法
2013/07/22 Javascript
js判断ie版本号的简单实现代码
2014/03/05 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
2015/12/16 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
vue+SSM实现验证码功能
2018/12/07 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
Node 模块原理与用法详解
2020/05/13 Javascript
在Python中用has_key()方法查找键是否存在的教程
2015/05/21 Python
详解如何使用Python编写vim插件
2017/11/28 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Python Django搭建网站流程图解
2020/06/13 Python
python集合的新增元素方法整理
2020/12/07 Python
L’AGENCE官网:加州女装品牌
2018/06/03 全球购物
Weblogc domain问题
2014/01/27 面试题
八项规定整改方案
2014/02/21 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
运动会演讲稿
2014/05/07 职场文书
机械操作工岗位职责
2014/08/08 职场文书
推广活动策划方案
2014/08/23 职场文书
护士实习自荐信
2015/03/06 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
Python中requests做接口测试的方法
2021/05/30 Python
Nginx进程调度问题详解
2021/09/25 Servers