javascript中类型转换
javascript是一种弱类型的语言,变量和类型无关,所以有时需要我们进行类型转换
一、数字型转换(number)
两种方法:
number: 类型转化走的是v8引擎最底层机制的转化规则
parseFloat、parseInt:是提供额外的方法转化规则
number
先将引用类型转化为字符串(tostring)方法,在把字符串转化为数字
字符串 => 数字:非有效数字转化为字符串
布尔值 => 数字 :1或0
null => 数字 : 0;
underfined => 数字 :NaN,
‘ ’ => 数字 :0
对象 => 数字:先把对象转化成为字符串,在转化成为数字
【】 => 数字 :0
Number(10); // 10
Number('10'); // 10
Number(null); // 0
Number(''); // 0
Number(true); // 1
Number(false); // 0
Number([]); //
0 Number([1,2]); // NaN
Number('10a'); // NaN
Number(undefined); // NaN
parseint() parsefloat(【va】,【进制】),对字符串从左到右依次查找有效的数字字符,知道遇到非有效字符串,停止查找,把找到的当做数字返回,
如果不是字符串,先转化为字符串在使用此方法
let str = '12.5px'
parseInt(str) // 12
parseFloat(str)// 12.5
parseFloat(true)// NaN
isNaN判断数字类型:
如果当前类型为数字类型,返回false,否则返回true
二、字符串类型转换(string)
原始类型,使用tostring方法()就是之前是什么样子 在外层包一层引号
数字 => 字符串:包裹一层引号。
NaN => 字符串: 'NaN' 。
true => 字符串: 'true' 。
null => 字符串: 'null' (浏览器会报错(禁止你使用)—— 通常可以进行转换)
undefined => 字符串:'undefined' (浏览器会报错(禁止你使用)—— 通常可以进行转换)
Object => 字符串: '[object,Object]' 。
普通对象转化的结果为 “ [object,object] ”,因为Object.prototype.toString 方法不是转化为字符串的,而是用来检测数据类型的。
String(123); // "123"
String(true); // "true"
String(null); // "null"(报错) String(undefined);// "undefined"(报错) String([1,2,3]) // "1,2,3"
String({}); // "[object Object]"
三、布尔类型转换(boolean)
1:‘ ’,
2:underfined,
3:NaN,
4:null,
5:false,
6: 0 ,
上面6个值在转换成为布尔值的时候为false,其他类型都是true
Boolean('') // false
Boolean(undefined) // false
Boolean(null) // false
Boolean(NaN) // false
Boolean(false) // false
Boolean(0) // false
Boolean({}) // true
Boolean([]) // true
四、原始类型的转换
转化原始类型分为两种情况:转化为字符串类型或其他原始类型。
如果已经是原始类型,不需要再进行转化。
如果转字符串类型,就调用内置函数中的 toString() 方法。
如果是其他基本类型,则调用内置函数中的 valueOf() 方法。
如果返回的不是原始类型,则会继续调用 toString() 方法。
如果还没有返回原始类型,则报错。