js基础梳理(一)数据类型

最近感觉遇到技术瓶颈了,原来是有的js基础知识理解的不够透彻,决定回过头再来一遍~~~
一、数据类型简介)关于js的数据类型,js分为基础类型和引用类型
基础类型包括:Number,String,Boolean,Null(现在是空值),Undefined(变量声明后没有附初始值)
(注意NaN是特殊的Number类型,not a number表示不是一个数字,NaN不等于任何值包括它自身)
引用类型:Function,Array,Object
基础类型和引用类型的区别:
1.在内存中的存储形式不同,基础类型的数据存在栈内存中,引用类型数据存在堆内存中
下面是基础类型数据存储结构示意图,数据结构中以栈的形式存储的数据遵循先进后出的原则
js基础梳理(一)数据类型_第1张图片
下图是引用类型在内存中的存储结构示意图:
引用类型中,栈内存的是它在堆里存储的地址,数据存储在堆内存中,当我们访问栈内存中对应的地址,就可以访问到数据
(这里可以简单举个例子理解一下复杂数据类型,我们可以把栈内存中存储的地址理解成某个网店的地址,我们要去买东西就直接访问该店的地址,但是给我们发货的是网店的仓库,货物存储在他们的仓库中,这里的货物就是我们要访问的数据,网店地址就是栈内存中存储的数据地址)

js基础梳理(一)数据类型_第2张图片
(关于深拷贝浅拷贝的理解:浅拷贝就是只拷贝了地址,就像A,B,C三个人同时访问三个不同的网店买东西,但这三个网店发货的仓库是同一个,假如某个商品库存只有一个,A买了B,C就无法买了,这就是浅拷贝,三人访问的是不同的店,但是发货的仓库是同一个,三人之间会互相影响,
就像let obj1={name:'hello}, let obj2,obj3=obj1, obj2和obj3只是拷贝了obj1的地址,三者操作的是同一份数据)

js基础梳理(一)数据类型_第3张图片
二、数据类型转换(带*的比较常见,建议重点掌握)

1.转换为字符串
1)toString(),如 let num=1, num.toString()
2)String(),如 let num=2, String(2)
3*)加号(+)拼接转换  和字符串用加号拼接的 都会被转成字符串
let num=2,  num+'hello'// 输出为2hello,类型为字符串

2.转换为数字(*)
1)parseInt()函数 将字符串类型转化为整数  let str1='123'
  parseInt(num) //123 Number类型
  let str2="123,11" parseInt(str2) //123 小数点后面的取不到

2)parseFloat()函数 将字符串类型转化成浮点型 后面的小数可以取到
  let str="123.12" parseFloat(str)// Number类型 123.12
  
3)Number()强制转换函数 将String类型转为数值型 

4)js隐式转化 +,-,*,/, 利用运算符隐式转换为数值型
  let num='1'+2 // 3 Number类型
(注意:以上函数碰到无法转换的类型,会返回NaN,如parseInt('hello')//NaN)

3.转换为布尔型
Boolean()函数 
注意:代表空的,否定的值会转换成false,如:'',"",0,NaN,null,undefined
Boolean('')//false
其余的会被转成true

总结完毕,感谢阅读!不足之处欢迎指正~~

你可能感兴趣的