在我们谈到JS的数据类型转化时,一定会知道分为自动转化和强制转化两种方式吧,通俗来讲,自动就是在某种条件下,电脑浏览器自己会把其他类型的数据转化为相应的数据类型,而强制则是咋们程序员应该手动来做的了,通过代码来在任何条件下都可以实现数据类型的转化。有不妥的地方欢迎大家指正哈。
咋们进入正题,第一步嘛,肯定是需要知道JS的数据类型到底是有哪一些,有哪些分类(基础数据类型,复杂的下次再谈哈):
1.布尔类型(Boolean),也是咋们经常常用的一种数据类型,它的值只有true/false,这两个数值,另外需要注意的则是,这两个值写的时候一定要小写
例子:var p1 = 4 > 3; 这个p的数据类型则是true,反之则数据类型相反
2.字符串类型(String/Str),当然他的数值也有相应的识别方法和书写规范,字符串当中的数值是需要用双引号" ",或者单引号' ',来包裹起来的。
例子:var p2 = '上海 ',那么这个p2数据类型则是字符串类型
3.undefined和null
undefined 表示没有数值 --- 应该有数值,但是现在没有数值
null 表示数值为空 --- 表示有数值,但是数值是"空"
4.数值类型(整数,小数/浮点数,NaN),数值类型则相应多一点,但是也是好理解的,咋们一个一个来看
整数:integer / int
在计算机程序中,常用的整数类型有
二进制 : 0 , 1
八进制 : 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7
十进制 : 0 - 9
十六进制 : 0 - 9 a - f
这里进制之间的转化时题外话,我就不多说了,最简单的方式了,咋们可以用电脑自带的计算机转到程序员模式,很快就能计算出来。
小数/浮点数:在JavaScript中,对于浮点数的总位数有规定一个浮点数,有效数字/有效数值,最多 17 位,所谓的有效数字,值得是,左起,非零的数值。
其中还分为有科学计数法,他的写法表达式为2e3,或者2e-3,他们相对应的数值是2000,和0.002。还有最重要的一点就是浮点数是有误差的,也 就是精度溢出/精度丢失,因为在计算机程序中,浮点数的存储,存储内容,不是准确值,而是近似值 ,举例来看:console.log( 0.1 + 0.2 == 0.3 ),这个 ==两边是否相等了?答案肯定是否定的,原因如下:浮点数因为存储方式的问题,直接执行运算或者比较,会造成精度溢出或者精度丢失的现象,造 成执行的误差,我会将浮点数,转化为 高精度浮点数 , 在进行运算,会避免这样的问题发生
NaN:则是不规范的数值,像123ab,这种则是NaN。
接下来咋们来看他们之间的转化是如何转化的。
1.其它数据类型转化为布尔数据类型
1-1:自动转化,只有在执行if判断的时候,程序会自动把其它数据类型转化为布尔数据类型,转化原则是:0," ",undefined,null,NaN,只有这五 个数值转化为false,其他所有的全是转化为true。
1-2:强制转化,就是把相应变量或者数值前加上Boolean(数值/变量),即可转化为为布尔类型,转化原则了,也自动转化是一样的。
2.其它数据类型转化为字符串数据类型
2-1:自动转化,只有在执行字符串拼接的时候,+两侧的数值会自动转化为字符串,转化原则是:布尔值 true ---> 字符串 'true',布尔值 false ---> 字 符串 'false',undefined ---> 字符串 'undefined',unll ---> 字符串 'null',数值 ---> 将数值解析转化为 对应的 纯数字的字符串
2-2:强制转化,就是把相应变量或者数值前加上String(数值/变量),即可转化为为字符串类型,转化原则了,也自动转化是一样的。
3.其它数据类型转化为数值类数据类型
3-1:自动转化,只有在执行数学运算的时候,程序会自动转化,转化原则为,布尔类型:true-->1,false-->0;null-->0;undefined-->0;字符串的 话,分为两种,一是纯数值类型的直接转化为数值,而是不符合数字规范的则转化为NaN,
3-2:强制转化,第一种就是把相应变量或者数值前加上Numble(数值/变量),即可转化为为字符串类型,转化原则与自动转化原则相同
第二种是把相应变量或者数值前加上parseInt(数值/变量),是获取变量或者数据的整数部分
第三种则是把相应变量或者数值前加上parseFloat(数值/变量),是获取整数,浮点数,全部都获取