JavaScript基础之值传递和引用传递
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基础之值传递和引用传递的更多相关文章
- JavaScript传递变量:值传递?引用传递?
今天在看 seajs-2.2.1/src/util-events.js源码,里面有段代码不是很理解: var events = data.events = {} // Bind event seajs ...
- JavaScript 函数参数传递到底是值传递还是引用传递
tips:这篇文章是听了四脚猫的js课程后查的,深入的理解可以参看两篇博客: JavaScript数据类型--值类型和引用类型 JavaScript数据操作--原始值和引用值的操作本质 在传统的观念里 ...
- C#基础原理拾遗——引用类型的值传递和引用传递
C#基础原理拾遗——引用类型的值传递和引用传递 以前写博客不深动,只搭个架子,像做笔记,没有自己的思考,也没什么人来看.这个毛病得改,就从这一篇开始… 最近准备面试,深感基础之重要,奈何我不是计算机科 ...
- C#学习笔记(基础知识回顾)之值传递和引用传递
一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...
- C#基础原理拾遗——引用类型的值传递和引用传递
以前写博客不深动,只搭个架子,像做笔记,没有自己的思考,也没什么人来看.这个毛病得改,就从这一篇开始- 最近准备面试,深感基础之重要,奈何我不是计算机科班出身,基础方面有些捉襟见肘.短期怎么补?做面实 ...
- java基础 - 形参和实参,值传递和引用传递
形参和实参 形参:就是形式参数,用于定义方法的时候使用的参数,是用来接收调用者传递的参数的. 形参只有在方法被调用的时候,虚拟机才会分配内存单元,在方法调用结束之后便会释放所分配的内存单元. 因此,形 ...
- GO语言基础---值传递与引用传递
package main import ( "fmt" ) /* 值传递 函数的[形式参数]是对[实际参数]的值拷贝 所有对地址中内容的修改都与外界的实际参数无关 所有基本数据类型 ...
- Java面向对象-方法的值传递和引用传递
Java面向对象-方法的值传递和引用传递 0 发布时间:『 2016-08-21 14:21』 博客类别:Java核心基础 阅读(197) 评论(0) Java面向对象-方法的值传递和引用传递 方 ...
- Java是值传递还是引用传递?
Java的值传递和引用传递在面试中一般都会都被涉及到,今天我们就来聊聊这个问题.这个问题一般是相对函数而言的,也就是Java中所说的方法参数,那么我们先来回顾一下在程序设计语言中有关参数传递给方法的两 ...
- 堆栈详解 + 彻底理解Java的值传递和引用传递
本文旨在用最通俗的语言讲述最枯燥的基本知识 学过Java基础的人都知道:值传递和引用传递是初次接触Java时的一个难点,有时候记得了语法却记不得怎么实际运用,有时候会的了运用却解释不出原理,而且坊间讨 ...
随机推荐
- stylus 样式
- linkedlist,arraylist,vector的特点
LinkedList 基于双向链表实现的列表,Node结构是它的内部类: Linkedlist <E> extends AbstractSequentialList<E> p ...
- redis对键进行的相关操作
redis对键操作的相关命令以及如何在python使用这些命令 redis对键操作的命令: 命令 语法 概述 返回值 Redis DEL 命令 del key [key ...] 该命令用于在 key ...
- CI 框架 隐藏index.php 入口文件 和 设置访问application下子目录
1.隐藏根目录下 index.php, 在根目录下创建 .htaccess文件 内容如下: <IfModule mod_rewrite.c> RewriteEngine on Rewrit ...
- [转]Unity-移动设备可用的压缩解压缩源码
原文:http://www.manew.com/thread-103250-1-1.html 最近在做客户端数据的分离,不希望对项目有什么影响,也不太想用AssetBundle,太麻烦,就在网上找了找 ...
- 二维数组的最大子数组和 时间复杂度:O(n的四次方)
先上代码 小组成员:高达,李奔 package 三月二十一号; import java.io.BufferedReader; import java.io.FileReader; import jav ...
- DOM-节点概念-属性
1.节点的概念 页面中的所有内容,包括标签,属性,文本(文字,空格,回车,换行等),也就是说页面的所有内容都可以叫做节点. 2.节点相关的属性 2.1.节点分类 **标签节点:**比如 div 标签, ...
- Spring Cloud 组件 —— eureka
官方文档,Spring Cloud 对其封装,Spring Cloud eureka 文档
- nvidia-smi GPU异常消失 程序中断
GPU型号为NVIDIA的1080Ti,最近出现的状况的是某一个GPU突然就出问题了,如果在该GPU上有运行程序的话则程序中断,nvidia-smi显示出来的GPU则少了这一个. 1.一开始怀疑是温度 ...
- pycharm 中 django 导入静态文件不提示补全
File—>setting----->Languages & Frameworks ------> Python Template Languages ------> ...