js的值传递和引用(地址)传递

首先总述一下:
js的5种基本数据类型 number,string,null,undefined,boolean 在赋值传递时是值传递,
js的引用数据类型(object,array,function)进行引用传递,其实底层都是对象。

废话不多说,下面直接上代码

值传递例子:

 var a = 10;
var b = a;
b = 5;
console.log('a:'+a,'b:'+b) // a:10 b:5

同样的,如果你改变其中a的值,a的值变化,b不会改变。

基本数据类型的赋值传递,变量直接包含的是一个值,你可以理解这个赋值过程为把你电脑里的一个文件(假设本来在c盘)复制到了D盘,然后你就很清楚知道,它两是完全不相干的两个文件(复制但是没修改前只是内容一样)了,没有关联性的独立文件,不会相互干扰。(不同地址路径下相同的值)

引用传递例子如下:

 var obj = {a:1,b:2,c:3};
var objed = obj;
objed.a = 0;
console.log('obj:',obj,'objed:',objed) // obj: {a: 0, b: 2, c: 3} objed: {a: 0, b: 2, c: 3}

obj对象赋值给变量objed,需要理解的是,对象是以地址的形式存放在内存中的。还是用简单易懂的话说吧,变量obj存放的不是a,b,c这三个值,而是它这个整体对象占用的一个空间(有些人用类似堆和栈的思路来对比理解),你每看到一个对象(非基本数据类型皆是对象),你看到的应该是一个空间,便于理解,可以自己取个名字“#001”(随便叫什么都行)。那么变量obj就是一个叫“#001”的地址空间,这个空间里面有a,b,c三个东西,且有它的值。objed变量被赋“值”是这个空间“#001”。所以obj和objed实质上都是叫“#001”的空间,不论你是修改obj里内容还是objed里的内容,实质上都是“#001”空间里的那个它。所以修改变量obj的内容和objed的内容都是同一个东西,obj和objed都是一样的内容包含。同样用使用电脑来理解,就是你将你的文件放到编辑器上修改创作,你会发现,你修理和鞭打的是你编辑器里的代码,但是你磁盘里的文件同样在挨打

JavaScript基础之值传递和引用传递的更多相关文章

  1. JavaScript传递变量:值传递?引用传递?

    今天在看 seajs-2.2.1/src/util-events.js源码,里面有段代码不是很理解: var events = data.events = {} // Bind event seajs ...

  2. JavaScript 函数参数传递到底是值传递还是引用传递

    tips:这篇文章是听了四脚猫的js课程后查的,深入的理解可以参看两篇博客: JavaScript数据类型--值类型和引用类型 JavaScript数据操作--原始值和引用值的操作本质 在传统的观念里 ...

  3. C#基础原理拾遗——引用类型的值传递和引用传递

    C#基础原理拾遗——引用类型的值传递和引用传递 以前写博客不深动,只搭个架子,像做笔记,没有自己的思考,也没什么人来看.这个毛病得改,就从这一篇开始… 最近准备面试,深感基础之重要,奈何我不是计算机科 ...

  4. C#学习笔记(基础知识回顾)之值传递和引用传递

    一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...

  5. C#基础原理拾遗——引用类型的值传递和引用传递

    以前写博客不深动,只搭个架子,像做笔记,没有自己的思考,也没什么人来看.这个毛病得改,就从这一篇开始- 最近准备面试,深感基础之重要,奈何我不是计算机科班出身,基础方面有些捉襟见肘.短期怎么补?做面实 ...

  6. java基础 - 形参和实参,值传递和引用传递

    形参和实参 形参:就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的. 形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元. 因此,形 ...

  7. GO语言基础---值传递与引用传递

    package main import ( "fmt" ) /* 值传递 函数的[形式参数]是对[实际参数]的值拷贝 所有对地址中内容的修改都与外界的实际参数无关 所有基本数据类型 ...

  8. Java面向对象-方法的值传递和引用传递

    Java面向对象-方法的值传递和引用传递 0 发布时间:『 2016-08-21 14:21』  博客类别:Java核心基础  阅读(197) 评论(0) Java面向对象-方法的值传递和引用传递 方 ...

  9. Java是值传递还是引用传递?

    Java的值传递和引用传递在面试中一般都会都被涉及到,今天我们就来聊聊这个问题.这个问题一般是相对函数而言的,也就是Java中所说的方法参数,那么我们先来回顾一下在程序设计语言中有关参数传递给方法的两 ...

  10. 堆栈详解 + 彻底理解Java的值传递和引用传递

    本文旨在用最通俗的语言讲述最枯燥的基本知识 学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨 ...

随机推荐

  1. 利用Skywalking-netcore监控你的应用性能

    Skywalking SkyWalking开源项目由吴晟于2015年创建,同年10月在GitHub上作为个人项目开源. SkyWalking项目的核心目标,是针对微服务.Cloud Native.容器 ...

  2. swagger结合dubbo的rest服务测试

    swagger结合dubbo的rest服务测试 背景介绍 我们应用的dubbo服务导出,可能没有直接的触发点去发起调用测试,除非自己手写controller和test类,缺乏一个动态工具,类似流行的s ...

  3. 003 css总结

    1.题目 有哪项方式可以对一个DOM设置它的CSS样式? CSS都有哪些选择器? CSS选择器的优先级是怎么样定义的? CSS中可以通过哪些属性定义,使得一个DOM元素不显示在浏览器可视范围内? 超链 ...

  4. python基础day3

    一.文件管理 文件管理是很多应用程序的基本功能和重要组成部分.Python可以使文件管理极其简单,特别是和其它语言相对比. 1.    读操作 1.1r模式 1.1.1读取其他路径下文件 首先在D盘创 ...

  5. linux 访问到对应的接口

    8080端口已经打开. 8080端口已被监听 telnet 192.168.163.128 8080   成功 也可以将防火墙关闭,这样所有的接口已经开放,不会再被拦截.这种情况下只要8080端口被某 ...

  6. 在vue-cli3中优雅的使用 icon

    首先我们得有图标 这里我们从网上下载svg文件或者UI给你导出svg文件 我们在src 文件下新建一个放置svg 文件 的文件夹 @/src/icons.将所有 icon 放在这个文件夹下. 创建 i ...

  7. django framework相关的错误信息

    错误信息1: 报错信息: TypeError: In order to allow non-dict objects to be serialized set the safe parameter t ...

  8. tp5 mkdir(): Permission denied 问题

    今天使用tp5 线上上传图片的时候遇到了一个问题 mkdir(): Permission denied 如图 百度了一下 发现大家都说 chmod -R 777 runtime 能解决问题 尝试了一下 ...

  9. kvm虚拟机存储管理

    一.kvm存储虚拟化介绍: 1.KVM 的存储虚拟化是通过存储池(Storage Pool)和卷Volume)来管理的. 2.Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种型 ...

  10. 执行JS

    JS执行切换frame框架后点击 Window.frame['frame路径'].frame['下级frame路径'].document.getElementById("id"). ...