js基本类型与引用类型,浅拷贝和深拷贝

1. 基本类型: string,number,boolean,null,undefined

2. 引用类型: Function,Array,Object

基本类型:存放在栈内存中的简单数据段,数据大小确定,内存空间大小可以分配。

  5种基本数据类型有Undefined、Null、Boolean、NumberString,它们是直接按值存放的,所以可以直接访问。

引用类型:存放在堆内存中的对象,变量实际保存的是一个指针,这个指针指向另一个位置。每个空间大小不一样,要根据情况开进行特定的分配。

  当我们需要访问引用类型(如对象,数组,函数等)的值时,首先从栈中获得该对象的地址指针,然后再从堆内存中取得所需的数据。

访问方式
                           基本类型               引用类型
操作和保存在变量的实际的值 值保存在内存中,js不允许直接访问内存,在操作的时候,操作的是对象的引用
存储的位置
  基本类型  引用类型

 保存在栈区


引用存放在栈区,实际对象保存在堆区

时间: 2024-10-24 09:36:06

js基本类型与引用类型,浅拷贝和深拷贝的相关文章

【基础巩固】js值类型和引用类型

示例 值类型 let a = 100; let b = a; a = 200; console.log(b); // 100 (互不影响) 引用类型 let a = { age: 20 }; let b = a; a.age= 21; console.log(b.age); // 21 (b.age随a.age的改变而改变) 存储方式 值类型 js变量存储在栈中,至于怎么存储咱先不管(毕竟我也不懂),这是js引擎的事情. 如图所示,key为变量名,value为存储内容,值类型变量的值直接存储在v

js 值类型和引用类型

今天来给大家介绍一下数据类型的另一种解读,值类型和引用类型(及简单类型和复合类型) 一.基本概念 ECMAscript变量包括两种不同的数据类型的值,一种叫做简单类型(值类型),指的是简单的数据段,另一种叫做复合数据类型(引用类型),是由多个值构成的对象. 在js的数据类型中,number,boolean,string,null和undefined都属于值类型,而函数和对象属于引用类型. 二.数据类型判断 基本类型:typeof 引用类型:instanceof var a=10; console

js值类型与引用类型

JavaScript值类型和引用类型有哪些 (1)值类型:数值.布尔值.null.undefined. (2)引用类型:对象.数组.函数. 三.如何理解值类型和引用类型及举例 我们可以用"连锁店"和"连锁店钥匙"来理解,不知道以下比喻合不合适,^-^. (1)值类型理解:变量的交换等于在一个新的地方按照连锁店的规范标准(统一店面理解为相同的变量内容)新开一个分店,这样新开的店与其它旧店互不相关.各自运营. [值类型例子] 代码如下: function chainSt

js 基本类型与引用类型的区别

ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型.也有其他的叫法,比如原始类型和对象类型,拥有方法的类型和不能拥有方法的类型,还可以分为可变类型和不可变类型,其实这些叫法都是依据这两种的类型特点来命名的,大家爱叫啥就叫啥吧 .1.基本类型 基本的数据类型有:`undefined,boolean,number,string,null.基本类型的访问是按值访问的,就是说你可以操作保存在变量中的实际的值.基本类型有以下几个特点: 1.基本类型的值是不可变得: 任何方法都无法改变一个基

js引用类型赋值,深拷贝与浅拷贝

JS中引用类型使用等号“=” 赋值,相当于把原来对象的地址拷贝一份给新的对象,这样原来旧的对象与新的对象就指向同一个地址,改变其中一个对象就会影响另外那个对象,也就是所谓的浅拷贝.例如: var arr = ["One","Two","Three"]; var arrto = arr; arrto[1] = "test"; document.writeln("数组的原始值:" + arr + "&

Javascript/js 的浅拷贝与深拷贝(复制)学习随笔

js变量的数据类型值分基本类型值和引用类型值. 在ES6(ECMAScript6)以前,基本数据类型包括String.Number.Boolean.Undefined.Null. 基本类型值的复制(拷贝) 从一个变量向另一个变量复制基本类型的值.使用赋值操作符 ' = ' 即可. 如: 1 var num1 = 1, num2; 2 num2 = num1; 上述代码定义了两个变量num1.num2.num1初始化值是1,num2是undefined.接着把num1赋值给num2. num1的值

js中对象的浅拷贝和深拷贝的区别

js中对象的浅拷贝和深拷贝的区别 浅度拷贝:复制一层对象的属性,并不包括对象里面的为引用类型的数据,当改变拷贝的对象里面的引用类型时,源对象也会改变. 深度拷贝:重新开辟一个内存空间,需要递归拷贝对象里的引用,直到子属性都为基本类型.两个对象对应两个不同的地址,修改一个对象的属性,不会改变另一个对象的属性. 数据的类型: 一般数据(值传递):字符,数值,布尔,undefined 拷贝(复制)时,传递的是值,修改新数据,不会影响老数据 复杂数据(引用传递):对象 拷贝(复制)时,传递的是内存地址的

js对象的浅拷贝与深拷贝

浅拷贝和深拷贝都是对于JS中的引用类型而言的,浅拷贝就只是复制对象的引用(堆和栈的关系,原始(基本)类型Undefined,Null,Boolean,Number和String是存入堆,直接引用,object array 则是存入桟中,只用一个指针来引用值,如果拷贝后的对象发生变化,原对象也会发生变化.只有深拷贝才是真正地对对象的拷贝. 1.浅拷贝 默认是浅拷贝,只是将地址进行了复制,示例如下: //浅拷贝 var obj1={name:"cat"}; var obj2=obj1; o

js对象浅拷贝和深拷贝详解

js对象浅拷贝和深拷贝详解 作者:i10630226 字体:[增加 减小] 类型:转载 时间:2016-09-05我要评论 这篇文章主要为大家详细介绍了JavaScript对象的浅拷贝和深拷贝代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷贝: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 var