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怎么把&字符换成"&amp:"
Oct 19 Javascript
JQuery扩展插件Validate—4设置错误提示的样式
Sep 05 Javascript
利用jquery的获取JS文件中的字符串内容
Feb 14 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
May 30 Javascript
javascript中怎么做对象的类型判断
Nov 11 Javascript
JS组件系列之Bootstrap Icon图标选择组件
Jan 28 Javascript
js 获取站点应用名的简单实例
Aug 18 Javascript
JavaScript类数组对象转换为数组对象的方法实例分析
Jul 24 Javascript
vue中将html字符串转换成html后遇到的问题小结
Dec 10 Javascript
Vue实现微信支付功能遇到的坑
Jun 05 Javascript
详解Nuxt.js 实战集锦
Nov 19 Javascript
浅谈webpack和webpack-cli模块源码分析
Jan 19 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
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
php创建多级目录代码
2008/06/05 PHP
在项目中寻找代码的坏命名
2012/07/14 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
2016/02/15 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
jQuery 3.0十大新特性
2016/07/06 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
实现JavaScript高性能的数据存储
2016/12/11 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
JS实现新建文件夹功能
2017/06/17 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
JS遍历DOM文档树的方法实例详解
2018/04/03 Javascript
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
浅谈layer的Icon样式以及一些常用的layer窗口使用方法
2019/09/11 Javascript
微信小程序开发之获取用户手机号码(php接口解密)
2020/05/17 Javascript
vue切换菜单取消未完成接口请求的案例
2020/11/13 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
Django验证码的生成与使用示例
2017/05/20 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
numpy 声明空数组详解
2019/12/05 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
JPA的特点
2014/10/25 面试题
服装采购员岗位职责
2014/03/15 职场文书
孔庙导游词
2015/02/04 职场文书
专家推荐信范文
2015/03/26 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
竞聘开场白方式有哪些?
2019/08/28 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android