javaScript的引用值和原始值的存放位置

在js中变量可以存放两种值也就是原始值和引用值

五大原始值:number String null  boolean undefind

引用值:例如 function arry  data  Object RegExp

原始值和引用值他们的存放位置是不一样的,原始值存放在栈内存中,而引用值存放在堆内存中

原始值的实例:

  当我们定义了一个变量 例var  a = 123;然后再定义一个b将a赋予b ;然后在改变a的值   a = 234 ;分别alert弹出a ,b  。a的值是234 ;  b的值是123;

过程详解:

   第一步在栈内存中声明一个空间 a 和声明一个空间 b 然后将值123赋值给a;然后b将a空间里的数值复制一份保存在b空间里,  最后 a = 234;是又开了一个空间存放一个234,然后让a指向它 ;而同时空间123的指向就会消失      *注意( 重新赋值并不是将原有的数值擦除然后 重写,而是重新在一个空间内写入并将名字转移过来)

引用值的实例:

以数组为例:当我们声明一个数组,var arr = [1,2,3];  var arr1 = arr;  arr.push(4); 然后分别输出两个数组 值都是1234;

再添加代码: arr = [5,6,7]; 然后再输出 arr和arr1  分别为 567 和1234

过程详解:

声明一个数组arr ;就是再堆内存中声明了一个空间,然后将数据存入空间内,在栈内存中声明存放一个数组的指向地址;然后再将arr的地址复制给arr1 ;紧接着像数组里添加了数字4,因为arr和arr1指向同一个空间,所以堆内存里的值改变他们都会改变;

然后将arr重新赋值;就是重新在对内存里声明空间,然后栈内存的指向就会发生改变,所以他们的输出结果不一致

****重新赋值就是另声明一个空间

************有误请留言更正**************

  

原文地址:https://www.cnblogs.com/wyb-com/p/11372817.html

时间: 2024-08-29 06:02:59

javaScript的引用值和原始值的存放位置的相关文章

EF里查看/修改实体的当前值、原始值和数据库值

EF里查看/修改实体的当前值.原始值和数据库值以及重写SaveChanges方法记录实体状态 - 心态要好 时间 2013-09-10 09:09:00 博客园_汪杰的cnBlogs 原文  http://www.cnblogs.com/oppoic/p/ef_dbpropertyvalues_toobject_clone_setvalues_changetracker_entries.html 本文目录 查看实体当前.原始和数据库值:DbEntityEntry 查看实体的某个属性值:GetVa

深刻理解Boolean对象值 和原始值

首先是要理解运算符 ||是这样运算的:从第一个开始,遇到有意义的返回,否则返回最后一个表达式(注意不一定是Boolean值):  &&是这样运算的:从第一个开始,遇到无意义的返回,否则返回最后一个表达式(注意同上):  !是这样运算的:对表达式的值取非(注意不是对表达式). 然后再试着 看看下面的代码: var ob1 = new Boolean(false); var ob2 = (ob1&&true); var ob3 = (true&&ob1); va

js中 原始值和引用值

在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值. 原始值-----存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置; 引用值-----存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处. 如果一个值是引用类型的,那么它的存储空间将从堆中分配.由于引用值的大小会改变,所以不能把它放在栈中,否则 会降低变量查寻的速度.相反,放在变量的栈空间中的值是该对象存储在堆中的地址.地址的大小是固定的,

javascript中的原始值和复杂值

前面的话 javascript的数据类型可以分为两种:原始类型(基本类型或者简单类型)和引用类型. 原始类型:Undefined,Null,Boolean,Number,String五种: 引用类型:Object,Array,Function: 与此相对应的,它们的值分别被称为原始值和复杂值. 特性 原始值 原始值是表示javascript中可用的数据或信息的最底层的形式或者最简单的形式.原始类型的值被称为原始值,因为它们的值是不可被细化的.也就是说,数字是数字,字符串是字符串,布尔值是true

ECMAScript 原始值和引用值

在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值. 原始值和引用值 在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值. 原始值 存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置. 引用值 存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处. 为变量赋值时,ECMAScript 的解释程序必须判断该值是原始类型,还是引用类型.要实现这一点,解释程序则需尝试判断该值是否

JavaScript基础学习之-JavaScript权威指南--3.8.3对象转换成原始值

对象转换成原始值 对象到布尔:比较简单所有对象到布尔都是true,包括包装类new Boolean(false)是一个对象而不是原始值,它将转换为true 对象到数字,对象到字符串比较复杂一些.注意这里讨论的是本地对象,不包含宿主对象(例如浏览器定义的对象) 所有对象继承了两个转换方法. 第一种toString() 它的作用是返回一个反映这个对象的字符串.默认的toString()方法并不会返回一个有趣的值. 很多类定义了特定版本的toString()方法: 数组的toString()方法将每个

原始值和引用值

在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值. 原始值 存储在栈(stack)中的简单数据段,也就是说,它们的值直接存储在变量访问的位置. 引用值 存储在堆(heap)中的对象,也就是说,存储在变量处的值是一个指针(point),指向存储对象的内存处. 为变量赋值时,ECMAScript 的解释程序必须判断该值是原始类型,还是引用类型.要实现这一点,解释程序则需尝试判断该值是否为 ECMAScript 的原始类型之一,即 Undefined.Null.Boolean.

你根本不会Javascript(1)——类型、值和变量

文原载于szhshp.org/tech/2017/02/18/JavaSprite.html 转载请注明 类型.值和变量 包装对象和原始值 ECMAScript 有 5 种原始类型(primitive type) Undefined Null Boolean Number String 基本类型(null, undefined, bool, number, string)应该是值类型,没有属性和方法. 内置对象 Javascript有一系列内置对象来创建语言的基本功能,具体有如下几种 Boole

javascript中值传递与值引用的研究

今天重新看了一下<javascript高级程序设计>,其中讲到了javascript中的值传递和值引用,所以就自己研读了一下,但是刚开始没有明白函数中的参数只有值传递,有的场景好像参数是以引用的方式传递的,但是实际上却不是,那到底是怎么回事,或者是函数中的传值是值传递还是值引用呢,下面来对书上给出的例子做一个图解,这样能够更好的解释这个问题.有顿悟的感觉.javascript中貌似共有8种数据类型,包括了字符串类型,数值类型,布尔类型,undefined类型,null类型,对象,数组,函数:1