JS基本数据类型与引用数据类型
对前端感兴趣的可以关注一下我的博客,会持续更新前端相关的知识和学习笔记,一起学习。
JavaScript中的数据类型分为基本数据类型和引用数据类型,那么哪些是基本类型,哪些是引用类型,以及它们的区别是什么呢?
基本数据类型
基本数据类型共有6种,包括String、Number、Boolean、Null、undefined以及ES6新增的Symbol。
引用数据类型
引用数据类型就是除基本数据类型外的数据,即Object对象类型,Array、Function、RegExp、Date都是对象类型。
基本数据类型与引用数据类型的区别
认识了基本数据类型与引用数据类型,那么它们之间有什么区别呢?
基本数据类型存储在栈(Stack)内存中,引用数据类型存储在堆(Heap)内存中。
基本数据类型存放在栈中,是一段简单的数据段,数据大小确定,内存空间大小可以分配,是直接按值存放的,可以按值访问。
引用数据类型存放在堆中,变量在栈中保存的是指向堆内存的地址值,这个地址值指向对应的对象类型,访问堆内存中的对象是通过地址值访问的。
下图表示基本类型和引用类型在内存中的存放位置,以及嵌套的数据类型的地址指向。
其中变量 a 和变量 b 保存的都是基本数据类型,foo 与 Foo 保存的都是引用数据类型,Foo 对象中还包含嵌套的数据类型。访问对象类型时,需要通过 obj.xxx 访问,即访问 Foo 内的 n 或 x 时,需要通过 Foo.n 或 Foo.n.x 访问,并且对象嵌套对象时,变量中不存在对 n 和 x 的直接引用,必须通过Foo.n 和 Foo.n.x 才能访问到嵌套的对象。
理解了上面的内容,那么对下面数据类型的赋值也会有一个清晰的认识。
// 基本数据类型的赋值var a = 10;var b = a; b = 20; // a和b的值分别为多少?console.log(a,b); // 10 20 // 引用数据类型的赋值var foo = { c: 30 };var Foo = foo;Foo.c = 40; // foo内的c与Foo内的c的值分别为多少?console.log(foo.c, Foo.c) // 40 40
在上面,我们知道了基本类型和引用类型在内存中的存放位置,那么我们这两个问题也会迎刃而解。
首先a是基本数据类型,存放在栈内存中,当把a的值赋给b时,即 b = 10,这时a和b在栈内存中保存的值相同,但这两个变量相互独立,改变b的值并不会影响a原本的值,因此a=10,b=20。
而foo属于引用数据类型,在栈内存中存放的是指向堆内存对象的地址值,赋值时把foo的地址值给了Foo,这时这两个变量指向同一个对象,改变Foo中c的值,foo中c的值也会改变。
JS基本数据类型与引用数据类型相关推荐
- ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...
JS中的数据类型 (一).基本数据类型(值类型) 1.number:数字 -12.12.5.-12.5 0这些数字都是number: js中增加了一个number类型的数据:'NaN' typeof ...
- JS中的基本数据类型与引用数据类型
JS中的数据类型可以这样分类: 原始数据类型: number, string ,boolean, undefined, null, symbol 基本类型(简单类型): 值类型: number((整数 ...
- js基本数据类型和引用数据类型有什么区别?
js基本数据类型和引用数据类型有什么区别? 1.基本数据类型和引用数据类型包括哪些? 基本数据类型: 在javascript中,有6种基本数据类型:string.number.boolean.null ...
- 浅谈js基本数据类型与引用数据类型的引用
ES变量有两种不同的数据类型:基本数据类型和引用数据类型. 基本数据类型 基本数据类型有:undefined,boolean,number,string,null. 基本数据类型的访问是按值访问的,换 ...
- JavaScript中的基本数据类型与引用数据类型
JavaScript中的基本数据类型与引用数据类型 转载自:https://www.cnblogs.com/c2016c/articles/9328725.html 1.栈(stack)和堆(heap ...
- ES6 深拷贝_JS基本数据类型和引用数据类型的区别及深浅拷贝
1.栈(stack)和堆(heap) stack为自动分配的内存空间,它由系统自动释放:而heap则是动态分配的内存,大小也不一定会自动释放 2.数据类型 JS分两种数据类型: 基本数据类型:Numb ...
- 【C++ 语言】引用数据类型 ( 引用数据类型定义 | 引用数据类型使用 | 引用类型参数 )
文章目录 引用类型 引用类型 引用数据类型 : 1. 引用数据类型定义 : 类型名称& 变量名 = 对应类型变量名称 ; //① 定义 普通 类型 变量int a = 8;//② 定义 引用类 ...
- JAVA基本数据类型和引用数据类型的参数传递详解
今天动力节点java培训机构小编为大家介绍 JAVA基本数据类型和引用数据类型的参数传递,希望通过此文大家能够熟悉JAVA基本数据类型和引用数据类型的参数传递,下面就随小编一起来了解一下JAVA基本数 ...
- JavaScript的数据类型、null 和undefined、原始数据类型和引用数据类型等JavaScript基础知识总结
一.JavaScript里有哪些数据类型,解释清楚null 和undefined,解释清楚原始数据类型和引用数据类型.比如讲一下1 和Number(1)的区别 数据类型: undefined,没有定义 ...
最新文章
- Python 技术篇-打开指定文件夹、目录、路径方法,运行指定文件演示
- Scrum 项目1.0 2.0 3.0 4.0 5.0 6.0 7.0
- pdf阅读器改背景色
- Linux容器能否弥补IoT的安全短板?
- springboot 监听所有异常_SpringBoot——目前Java开发最流行的框架(一)
- mac os android连接wifi密码,Mac使用小技巧:找回WiFi密码
- linux可执行文件bad interpreter解决方法
- window 装oracle,在Window下安装Oracle
- java中怎么实现大小写转换(利用阿斯克码)
- 安卓机顶盒运行linux,全志 Allwinner A20 机顶盒刷入原生 Debian
- cpu压力测试 Android,测试CPU和GPU性能压力(StressMyPC)
- Bitdefender 发布GandCrab V5.2勒索病毒解密工具
- STM32中断编程步骤
- mysql新闻管理系统表_《新闻管理系统》数据库设计_参考答案.doc
- Project Management-软件开发之项目管理
- shell加密工具shc的安装
- 老罗如果输了整个民族都输了
- 【转】论文阅读理解 - Panoptic Segmentation 全景分割
- python获取元素在数组中的位置
- 写不出好的策划方案?大神手把手教你写策划
热门文章
- 1.项目体系架构设计(电商推荐系统)
- 使用ID3算法构造决策树——python
- 怎么将照片格式转换jpg?这两个图片格式转换方法一看就会
- win10android文件传输,win10电脑如何发送文件到安卓手机?win10电脑发送文件到安卓手机的方法...
- 基于UNet网络实现的人像分割 | 附数据集
- 龙格-库塔法 wiki
- C++字符数组赋值问题(1)
- 1.C语言基础-给字符数组赋值
- 结构体 + 联合体 + 位域 使用
- 解决串口猎人软件Component ‘anigif.OCx‘ or one of its dependencies not correctly registered: a file is miss