简单数据类型与复杂数据类型 数据类型内存分配

1.简单数据类型叫做基本数据类型/值类型 

在存储变量值存储的是数值本身 因此也可叫值类型

简单数据类型:string  number boolean undefined null

这几大数据类型 返回的都是数据类型本身   但是null比较特殊

var str='hello word'    //字符串
console.log(typeof str) //打印的结果为 string



var num=10              //数值
console.log(typeof num) //结果为number


var a=true              //布尔
console.log(typeof a)   //结果为boolean


var b;                 //undefined
console.log(typeof b)  //结果为undefined

var c=null             //null类型
console.log(typeof c)  //结果为Object

 由此可见null 返回的并不是数据类型本身 而是一个空的对象 !!

众所周知 Javascript 是Brendan Eich(兰登.艾克) 仅仅花了十天!!研究出来得 难免会有点小bug  

按照其它数据类型 null也应该返回是数据类型本身 可能大佬当时设计得时候有点问题把 把null设置成了Object   然后ECMAScript召开一个会议 商讨要不要把这个改回来 最后也不了了之了~~

这不是我们该操心研究得事情 就让他错下去吧 反正也不影响大佬们敲代码!!

在日常敲代码中如果一个变量以后要存储一个对象但是暂时还没有想好 就可以先给null 因为null本身返回的就是一个空的对象

2.复杂数据类型/引用数据类型

在存储时变量中存储的仅仅是地址 因此叫做引用数据类型 通过new关键字创教你的对象就是引用数据类型 如Object Array Date等

3.在这里结合着对堆和栈简单的理解 去理解一下简单与负责数据类型在内存中的存储分配

在js中是没有堆栈概念的 但是通过堆栈的方式 更容易理解代码的一些执行方式 但是js也是基于其它语言诞生的 里面还是隐藏着堆和栈的

简单数据类型是存储在栈内存中 复杂数据类型是存储到堆内存中的

当我们声明一个变量  var age=18  此时就会在栈内存中开辟一个空间 直接存储18这个值 

所以在使用age时就会直接去栈里面找到这个值

当我们声明一个数组时 数组属于复杂数据类型 他会先在栈内存中开辟一个空间 但是这个空间不是直接存储我们数组1 2 3而是在栈里面存储一个十六进制的地址 通过地址去堆内存中找到对应数组[1,2,3]   所以真正实例对象的内容是存放在堆里面去的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值