2020-3-19 seo达人
JS中数据类型转换
目前为止,我了解到的JavaScript中共有6种类型。通过typeof关键字可以查看类型名称。
数据的类型:
字符串:若值为字符串,则显示为String。字符串使用单引号或双引号括起来。在控制台显示为黑色。
数字:若值为数字,则显示为Number。在控制台显示为蓝色。
布尔值:若值为布尔值,则显示为Boolean。它的值只有”true”和”false”。
对象:若值为对象,则显示为Object。
未定义:若值未定义,也就是仅仅声明,但未进行赋值,则显示为Undefined。
空值:若值为指向不引用对象的指针,则显示为Null,它与Undefined不同,以后慢慢深入了解。
以下表格详细写出了各种情况下相互转换的结果,可作为辅助记忆。
值 转换为字符串 转换为数字 转换为布尔值 转换为对象
undefined “undefined” NaN false throw TypeError
null “null” 0 false throw TypeError
true “true” 1 new Boolean(“true”)
false “false” 0 new Boolean(“false”)
“” 0 false new String("")
“1.2” 1.2 true new String(“1.2”)
“1.2a” NaN true new String(“1.2a”)
“aaa” NaN true new String(“aaa”)
0 “0” false new Number(0)
1 “1” true new Number(1)
NaN “NaN” false new Number(NaN)
Infinity “Infinity” true new Number(Infinity)
[] “” 0 true
[9] “9” 9 true
[“a”“b”] “a,b” NaN true
在Js中,数据类型可以相互转换,转换的方式有两种,隐式转换和强制转换,首先来说一些隐式转换。在进行代码书写时,要经常提醒自己所使用的元素是什么数据类型,在进行某些操作后是否会导致数据类型的变化,原因就是Js会对数据进行类型的隐式转换。
隐式转换举例:
(+)加法运算的隐式转换:加号两边只要出先了字符串,就自动将两者均转化为字符串,使两个字符串发生“拼接”,最后生成的结果也是一个字符串;如果前后都不是字符串,则转化为数字类型进行计算。
(-、*、/、%)其他算数运算的隐式转换:前后都转化为数字类型进行计算。
(!)逻辑非的隐式转换:他会将他后面的变量或表达式转换为布尔值。
(<,>)比较运算符的转换:如果前后存在一个数字,会对另一个转化为数字进行比较;如果前后均为字符串,会依次比较对应字符的编码大小,老大比老大,老二比老二,依次进行。
(&&,||)逻辑运算符的转换:先将前后都转化为布尔值再进行判断,要记住的是,只有undefined,null,0,””,NaN会转化成为false,其他都是true。
(== 、===)这里作为补充说明,null与Undefined相等但不全等,NaN与任何都不相等。
强制转换的方式:
1.转化为字符串
String(里面写待转化的内容):没什么好解释的,就是强制将你所看到的转化为你所看到的。
toString(里面写目标数字是几进制),写法为:待转化内容.toString(目标内容是几进制)。括号内不写时默认为10。
toFixed(保留小数的位数),写法为待转化内容.toFixed(保留小数的位数),存在精度误差。
2.转化为数字
Number(),只有所转化内容在肉眼看到的全是数字,才会正常转化;false会转化为0,true会转化为1;null会转化为0;undefined会转化为NaN;其他情况均为NaN。
parseInt(待转化内容,待转化内容的进制方式),与toString互为逆运算,不写的话默认为10。如果待转化内容为字符串,若以数字开头,可以从开始转换到字符前为止变成数值。布尔值,undefined,null经过转化均为NaN。
ParseFloat(),与上面一致,不赘述。
3.转化为布尔值
书写方式为Boolean(),如果上面的隐式转换你有好好看,这里很得不需要再写了。