最近感觉遇到技术瓶颈了,原来是有的 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,undefined
Boolean('')//false
其余的会被转成 true
总结结束, 感激浏览!不足之处欢送斧正~~