说说JavaScript的数据类型,以及它们存储上的区别

JavaScript的数据类型有两大类:基本类型(也可以说是简单类型)和引用类型(也可以说是复杂类型)。

基本类型和复杂类型的区别在于存储位置有所不同。

类型介绍

基本类型

基本类型有6种:Number、String、Boolean、Undefined、Null、Symbol

1.Number

最常见的数值是十进制的,也可以设置八进制(0开头),也可以设置十六进制(0x开头)。如果使用浮点就一定要包含小数点,也可以用科学计数法表示。数值类型中有一个特殊的值——“NaN”,用来表示原本要返回数值的操作失败了,而不是直接报错。

2.String:

字符串类型,可以用单引号(''),双引号(""),反引号(``)标识。字符串是不可变的,一旦创建就不可改变,如果要改变,是先进行了销毁再重新创建。

var text = 'TEXT'

text = text + 'Bonny' //会先进行销毁再重新创建

3.Boolean

布尔类型,有两个字面值:true、false

通过Boolean可以将其他类型转为布尔值,规则如下:

数据类型转为true的值转为false的值
String 非空字符串”“
Object任意对象null
UndefinedN/A(不存在)underfined
Number非0数值(包括无穷值)0,NaN

4.Undefined

Undefined类型只有一个值,那就是undefined,undefined和未定义是不一样的,用let、var定义了一个变量但是没有赋值的时候,就会默认值为undefined,而未定义会报错。

5.Null

也只有一个值,就是null。逻辑上null值表示一个空对象指针,所以对一个值为null的变量进行typeof的时候会返回“object”。其实undefined值是由unll值派生来的。只要变量要保存对象,而当时又没有哪个对象可以保存的时候,就可以用null来填充该变量。

6.Symbol

symbol 是一种原始数据类型,用于创建唯一的标识符。你可以使用 Symbol() 函数来创建一个新的 symbolsymbol 的值是不可变的,且在全局中是唯一的。它主要用于创建对象属性的键,以确保键的唯一性。

复杂类型

复杂类型有很多,常见的有:Object、Function、Array、Date、RegExp、Map、Set等。

存储方式的区别

基本类型的值存放在栈中,栈中存放的就是对应的值;

引用类型对应的值存放在堆中,而将指向堆内存的地址存放在栈中。

所以当不同类型数据赋值给另一个变量的时候也有点不同:

  • 基本类型:生成相同的值,且两个变量的值对应的是不同的地址
  • 复杂类型:将保存的内存地址赋值给另一个变量,即两个变量指向堆内存中的同一个值
  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bonny雨曦

码字不易,多多鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值