Javascript中的基本类型和引用类型概述说明
作者:@乐知者@ 时间:2024-04-18 09:37:04
简单概述
js变量可以划分为两种不同的数据类型:
基本类型:undefined、null、Boolean、Number、String、Symbol(ES6)
引用类型:除基本类型以外,也可以理解为对象,如:Object、Array、RegExp、Date、Function等
类型的区别在于:
基本类型 | 引用类型 | |
---|---|---|
可变性 | 不可变 | 可变 |
存储区 | 栈区 | 栈区和堆区 |
访问 | 按值访问 | 按引用访问 |
两者比较 | 值的比较 | 引用的比较 |
详细说明
值的可变性
基本类型(以string类型为例):
let person = '小明';
person.age = 18;
console.log(person.age); // undefined
引用类型值(原始值)可添加属性和方法:
let person = { name: '小落子' };
person.age = 18;
person.addAge = function() {
person.age2 = person.age + 1;
}
person.addAge();
console.log(person.age, person.age2); // 18 19
这样就说明了,基本类型的值是不可变的,而引用类型的值是可变的
存储
基本类型存储结构:
栈区 | 栈区 |
---|---|
name | 小红 |
age | 18 |
基本类型的变量存放在栈区(栈区指内存里的栈内存,stack)
栈区保存了变量的标识和变量的值
引用类型存储结构:
引用类型的存储需要内存的栈区和堆区共同完成(堆区指内存里的堆内存,heap)
栈区保存了变量的标识符和指向堆内存中该对象的指针(该对象在堆内存的地址),堆区保存了实际的对象
访问/比较
// 基本类型,以string为例
let a = '[]', b = '[]';
console.log(a === b); // true
// 引用类型
let c = [], d = [];
console.log(c === d); // false
基本类型的访问是按值访问的;引用类型是按**引用(地址)**访问的
基本类型比较的是值,所以相同,就为 true;引用类型比较是两个对象堆内存地址是否相同,虽然变量c和变量d都是一个空数组,但是它们的堆内存地址不是一样的,地址指向的不是同一个数组对象,所以不相等。
经常遇到的问题
关于基本类型和引用类型,不管是面试中,还是平常使用中,经常遇到的问题便是克隆(复制),这里又引出另一个概念(深克隆和浅克隆,对于基本类型是没什么影响的)
浅克隆:复制引用类型时,不仅复制,而且还把内存地址也复制了一遍;修改其中一个,另一个会跟着变化
深克隆:复制,内存地址不同;修改其中一个,另一个不会相应的改变
来源:https://blog.csdn.net/weixin_45663702/article/details/126157239
标签:JS,基本类型,引用类型
0
投稿
猜你喜欢
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2024-05-11 09:31:07
比较一下看看自己掌握了多少SQL快捷键
2009-01-04 14:04:00
Flask框架debug与配置项的开启与设置详解
2022-04-11 17:05:58
sqlserver 千万数量级分页存储过程代码
2024-01-14 07:50:13
使用Python将数组的元素导出到变量中(unpacking)
2022-01-12 10:11:43
网页设计布局原则
2010-04-20 17:18:00
django项目搭建与Session使用详解
2021-05-19 11:37:31
基于Python实现原创程序猿乘风破浪小游戏
2021-03-09 01:41:51
C#访问SQL Server数据库的实现方法
2024-01-14 17:14:23
如何利用Python和matplotlib更改纵横坐标刻度颜色
2022-06-02 04:00:03
在Python的Tornado框架中实现简单的在线代理的教程
2021-12-31 08:51:39
javaScript中一些常见的数据类型检查校验
2023-07-02 05:19:09
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
2023-07-14 14:37:00
Sql学习第四天——SQL 关于with cube,with rollup和grouping解释及演示
2024-01-26 03:41:13
Python defaultdict方法使用分析
2023-01-02 18:05:35
pandas 实现将重复表格去重,并重新转换为表格的方法
2023-09-09 05:26:58
CSS元素类型
2009-04-27 12:25:00
python 给图像添加透明度(alpha通道)
2021-05-04 04:57:22
python爬取网页内容转换为PDF文件
2023-04-29 10:53:12
使用SQL Server 2008中对象相关性
2008-12-12 06:36:00