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] 所以真正实例对象的内容是存放在堆里面去的