最近感觉遇到技术瓶颈了,原来是有的js基础知识了解的不够透彻,决定回过头再来一遍~~~
一、数据类型简介)对于js的数据类型,js分为根底类型和援用类型
根底类型包含:Number,String,Boolean,Null(当初是空值),Undefined(变量申明后没有附初始值)
(留神NaN是非凡的Number类型,not a number示意不是一个数字,NaN不等于任何值包含它本身)
援用类型:Function,Array,Object
根底类型和援用类型的区别:
1.在内存中的存储模式不同,根底类型的数据存在栈内存中,援用类型数据存在堆内存中
上面是根底类型数据存储构造示意图,数据结构中以栈的模式存储的数据遵循先进后出的准则
下图是援用类型在内存中的存储构造示意图:
援用类型中,栈内存的是它在堆里存储的地址,数据存储在堆内存中,当咱们拜访栈内存中对应的地址,就能够拜访到数据
(这里能够简略举个例子了解一下简单数据类型,咱们能够把栈内存中存储的地址了解成某个网店的地址,咱们要去买货色就间接拜访该店的地址,然而给咱们发货的是网店的仓库,货物存储在他们的仓库中,这里的货物就是咱们要拜访的数据,网店地址就是栈内存中存储的数据地址)
(对于深拷贝浅拷贝的了解:浅拷贝就是只拷贝了地址,就像A,B,C三个人同时拜访三个不同的网店买货色,但这三个网店发货的仓库是同一个,如果某个商品库存只有一个,A买了B,C就无奈买了,这就是浅拷贝,三人拜访的是不同的店,然而发货的仓库是同一个,三人之间会相互影响,
就像let obj1={name:'hello}, let obj2,obj3=obj1, obj2和obj3只是拷贝了obj1的地址,三者操作的是同一份数据)
二、数据类型转换(带*的比拟常见,倡议重点把握)
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,undefinedBoolean('')//false其余的会被转成true
总结结束,感激浏览!不足之处欢送斧正~~