js数据类型有哪些?区别在哪

在 JavaScript 中 , 我们可以分为两种类型:基本类型 引用类型。两者类型的区别就是:存储位置不一样。

数据类型


1、基本类型主要为6种: 

  1. Number:整数或浮点数,还有-Infinity,Infinity,NaN
  2.  String:一串表示文本的字符序列;字符串是不可变的,意思是一旦创建,它们的值就不能变了。
  3.  Boolan: 类型有两个字面值: true 和 false。
  4.  undefined:  只包含一个值undefined;当使用 var或 let声明了变量切没有初始化时,就相当于给变量赋予了 undefined值。
  5. null:只包含一个值null;表示一个空对象指针,这也是给 typeof 传一个 null 会返回 "Object" 的原因。
  6. symbol:是ES6新出的一种数据类型,这种数据类型的特点就是没有重复的数据,可以作为object的key。

        数据的创建方法Symbol(),因为它的构造函数不够完整,所以不能使用new Symbol()创建数据。由于Symbol()创建数据具有唯一性,所以 Symbol() !== Symbol(), 同时使用Symbol数据作为key不能使用for获取到这个key,需要使用Object.getOwnPropertySymbols(obj)获得这个obj对象中key类型是Symbol的key值。

Symbol特点:

  • Symbol的值是唯一的,用来解决命名冲突问题
  • Symbol值不能与其他数据进行运算
  • Symbol定义的对象属性不能使用for...in循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有键名

2、引用类型(复杂数据类型) :

通常用Object代表,普通对象,数组,正则,日期,Math数学函数都属于Object。

3、其他引用类型

               除了上述说的三种之外,还包括 Date、RegExp、Map、Set等.....

存储区别


1:基本数据类型和引用数据类型存储在内存中的位置不同

             当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值。

    1、基本数据类型 存储在 栈 中 。

                

    a 的值为一个基本类型,是存储在栈中,将 a 的值赋给 b,虽然两个变量的值相等,但是两个变量保存了两个不同的内存地址。

     2、 引用类型 的对象存储于 堆 中。

                ​​​​​​​

        引用类型数据存放在堆中,每个堆内存对象都有对应的引用地址指向它,引用地址存放在栈中。obj1 是一个引用类型,在赋值操作过程汇总,实际是将堆内存对象在栈内存的引用地址复制了一份给了 obj2,实际上他们共同指向了同一个堆内存对象,所以更改obj2会对obj1产生影响。

  • 23
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值