js中的数据类型

基本数据类型

字符串   数字          布耳值       未定义的       空      唯一值    大数字

String   Number    Boolean    undefined    null    symbol   bigInt

// symbol ==> 唯一值 两个完全一样的值用symbol()声明,判断时不会一样
    // 在对象里可以用来声明两个一样的键值

    console.log(Symbol("wh") === Symbol("wh"));//false

    //bigInt ==> 大数字 定义的超过几位进行科学计数 计算的时候结果如果超过给出的,
    //最大安全数字(Number.MAX_SAFE_INTEGER)
    //后端数据库在定义数字的时候会定义数字的长度
    //JS中是有最大安全数字的(js中的数字是有最大长度限制的)
    // 会在后面显示0000。不会计算了 。需要计算要是9007199254740991n +1000n


    console.log(Number.MAX_SAFE_INTEGER); //最大安全数字  9007199254740991
    console.log(Number.MIN_SAFE_INTEGER); //最小安全数字 -9007199254740991
   

引用数据类型

基类)-- 对象  时间     数组      函数           正则

 Object         Date     Array    function    RegExp

 时间、数组、函数、时间、正则 最底层后component 都会是对象

    

数据类型判断

typeof
instanceof
constructor 
Object.prototype.toString.call()

typeof只能判断基本数据类型; 判断引用数据类型 都返回object

    console.log(typeof '你好'); // string
    console.log(typeof 123); // number
    console.log(typeof null);  //bject
    console.log(typeof []); //bject
    console.log(typeof {}); //bject
    console.log(typeof function () { }); //function

typeof用于判断基本数据类型返回的是一个小写类型 --- string

但在基本数据类型中有一个特例null,它返回的是object。

因为浏览器是用c++之类的语言编译的,是一个二进制的

在js中的数据类型有浏览器编译成二进制后 具体是多少不知道。

举例

假如

String     //001
Number     //010
Boolean    //011
undefined  //101
Object     //000
null       //000000

在街上中tyoeof只会取前三位数,所有在编译的是后会吧null当成object

instanceof只有知道数据类型才可以判断   返回的是一个布耳值

语法: 判断数据类型的变量 instanceof Array

    let obj = {}
    console.log(obj instanceof Object); //true


constructor 

语法: 要判断数据类型的变量.constructor === Array

   let obj = {}
   console.log(obj.constructor === Array); //false]


Object.prototype.toString.call()原生js最全能的数据类型判断 

返回的是"[object 数据类型]"

Object.prototype.toString.call({}) // '[object Object]'
Object.prototype.toString.call({}).replace(/^\[object (\S+)\]$/, '$1') // 'Object'

 基本数据类型和引用数据类型的区别

基本数据类型是原始值,存储在栈内存中。

引用数据类型,存储在堆内存中他的值是在堆内存中。

每声明一个引用数据类型就会在堆内存中开辟了一块新的内存空间有自己的内存空间地址,我们通过变量来复制一个引用数据类型的时候其实只是把这个开辟的内存空间的地址进行了一个赋值。

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值