显式类型转换和隐式类型转换

122 阅读2分钟

用输出的方式倒逼自己输入。

显式类型转换

Number(mix)

将传入的参数转换成数字。

console.log(Number(123)); //123
console.log(Number(-123)); //-123
console.log(Number("123")); //123
console.log(Number("-123")); //-123
console.log(Number("123a")); //NaN
console.log(Number("-123a")); //NaN
console.log(Number(true)); //1
console.log(Number(false)); //0
console.log(Number(undefined)); //NaN
console.log(Number(null)); // 0

不会进行截断操作。如"123abc"会转成NaN,而不是123
undefined会转成NaN
null会转成0
调用Number方法转完之后一定是数字类型。

let a = Number(undefined);
console.log(typeof(a) + ":" + a); //number:NaN

parseInt(string,radix)

parseInt有两个参数, string : 需要被解析的字符串 radix :可选,要解析的数据的基数 将其他进制转换成10进制。

console.log(parseInt("123abc")); //123
console.log(parseInt("123.9")); //123
console.log(parseInt("a123.9")); //NaN
console.log(parseInt(null)); // NaN
console.log(parseInt(undefined)); // NaN
console.log(parseInt("10",16)); // 16

会有截断操作,只保留数字部分。 常用操作,需要对像素进行操作时,50px只需要取50的值时

console.log(parseInt("50px")); // 50

parseFloat

与parseInt类似,只有一个参数,会将参数转换成浮点类型。

console.log(parseFloat("123.12")); //123.12
console.log(parseFloat("123")); // 123
console.log(parseFloat("123.123adf")) // 123.123
console.log(parseFloat(null)); // NaN
console.log(parseFloat(undefined)); // NaN

String(mix)

任何参数都会转换成字符串。

console.log(String(null)); //"null"

实际应用中,使用+""会更多。

console.log(null + "") // "null"

Boolena()

将参数转换成boolean类型,truefalse

只有0,-0,null,undefined,NaN,false,会转换成false,其他的所有值,都会转换成true
包括{}[],或者字符串的"false"

toString(radix)

可选。规定表示数字的基数,使 2 ~ 36 之间的整数。若省略该参数,则使用基数 10。但是要注意,如果该参数是 10 以外的其他值,则 ECMAScript 标准允许实现返回任意值。

用法和上面几个不同。

NumberObject.toString(radix)

当不带参数时,结果和调用String方法类似,一般尽量使用String进行转换操作。
注意:undefindenull没有toString方法,会报错。

当有参数时,将10进制转换成其他进制
如:将2进制转换成16进制
先转换成10进制,再从10进制转换成16进制

var num = 10000
var test = parseInt(num, 2)
console.log(test.toString(16))

隐式类型转换

isNaN()

先调用Number()方法,再和NaN比较

console.log(isNaN("NaN")); // true
console.log(isNaN("abc")); // true
let a = "abc";
a1 = Number(a);
//再看a1的结果是不是 `NaN`

++/-- +/-(一元正负)

调用Number方法

+(加号)

当加号两侧有一个字符串,会调用String

console.log("a" + 1); //a1

- * / %

减号,乘号,除号,摩尔

调用Number方法

&& || !

调用Boolean

< > <= >=

有数字,会调用Number

== !=

undefined > 0  //false
undefined < 0  //false
undefined == 0 //false
null > 0   //false
null < 0   //false
null == 0  //false
undefined == null //true
NaN == NaN //false