JavaScript中的数据强制类型转换
转换为String类型
将其他数据类型转换为String类型,就是将原来的类型的值加上引号引起来。
Number: 123——>“123”;12.2——>“12.2”
Boolean: true——>“true”;false——>“false”
Undefined: undefined——>“undefined”
Null: null——>“null”
-
方法1:采用toString()方法(针对Number类型和Boolean类型)
toString()方法只对Number类型和Boolean类型转换成字符串有用,因为其包装类中含有此方法,若其他类调用此方法进行字符串转换时则会报错(Uncaught TypeError: obj.string is not a function)
该方法不会改变原来的变量,它会将转换后的值返回 -
方法2:采用String()函数
将待转换的数据作为String()函数的参数,该函数会返回转换后的值;该函数不会影响到原变量的值;使用该函数时,对于Boolean类型和Number类型的值在底层依然是调用toString()方法实现的,而对其他类型则不是 -
方法3:采用(待转换的非String类型数据+"")的方式
任何非String类型的数据和String类型的数据做+运算时都会先转换为String类型,然后再进行拼串操作,所以若将非String类型的数据加上一个空串""就可以将其隐式的转换为String类型
转换为Number类型
任意数据和NaN运算结果都是NaN;将其他数据类型转换为Number类型的数据主要有以下几种情况:
String:“123”——>123;“123a”——>NaN;""——>0;" "——>0
Boolean:true——>1;false——>0
Null:null——>0
Undefined:undefined——>NaN
-
方法1:采用Number()函数
该函数可以将任意类型的基本数据类型为Number类型,该函数不会改变原来的变量,会将改变后的变量返回 -
采用一元运算符(+待转换的数据)
一元运算符只需要一个操作数,而+运算符会将任何非Number类型的基本数据类型转换为Number后再进行计算,但是+不会对数值产生影响,故可以采用该方式将其他基本数据类型隐式的转换为Number类型 -
采用parseInt()函数和parseFloat()函数
parseInt()函数和parseFloat()函数是专门用于将String类型的数据转换为Number类型的数据的
parseInt()函数会从左到右将字符串中的有效整数提取出来并返回,遇到字符或小数时停止读取
parseFloat()函数会从左到右将字符串中的有效数值提取出来并返回,遇到字符时停止读取
如果对非String类型的数据使用parseInt()和parseFloat(),它会先被转换成字符类型数据,然后再操作,最后得到的结果是NaN
这两个函数都不会改变原来的数据,只会将新的数据返回
转换为Boolean类型
将其他数据类型转换为Boolean类型只要以下几种情况
String:“123”——>true;""——>false;" "——>true(除了空串其他都是true)
Number:0——>false;NaN——>false;(除了0和NaN其他都是true)
Null:null——>false
Undefined:undefined——>false
- 方法1:使用Boolean()函数
该函数不会改变原来的数据,只会将转换后的数据返回
2.方法2:使用(!!待转换的数据)
如果对非Boolean值进行!运算则会先将其转换为布尔值后再进行运算,原理和Boolean()函数一致。只是一个!运算会改变转换后的值,所以可以利用!!运算将非Boolean值隐式地转换为Boolean类型