开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第23天,点击查看活动详情
一、显式类型转换
1、强转为Number
var number = Number("1"); // number 1
var number = Number(true);// number 1
var number = Number(false); // number 0
var number = Number(null); // number 0
var number = Number(undefined); // number NaN
//非数字字符串转换时 为NaN
var number = Number("a");// number NaN
//只要包含字符都不行
var number = Number("123a"); // number NaN
//如果字符串是个小数,也会保留小数位
var number = Number("123.123"); //number为 123.123
2、数字 转换为 整数 Number
var number = parseInt("123"); // number 123
var number = parseInt(123);// number 123
var number = parseInt(123.555);// number 123
var number = parseInt("123.5555");// number 123
// parseInt()只能转换数字或者包含数字的字符串,其他值进行转换都是NaN
parseInt("100px");//100
parseInt("px100");//NaN 数字只能在前面,如果第一位不是数字,直接不看后面的了
parseInt()可以指定转换的进制
parseInt(10,16);//按照16进制对10转换为10进制 得到:16
parseInt("a",16);//按照16进制对"a"转换为10进制 得到:11
3、转换为 Float 数值
parseFloat("123.56");//123.56
parseFloat("123.56abc");//123.56 //不能进行进制转换
4、转换为字符串
- String() :可以转换任何类型
var str = String(123);//"123"
var str = String(true); // "true"
var str = String(null); // "null"
var str = String(undefined); //"undefined"
- toString():除undefined和null外的类型
//toString()是一个函数,不能转换undefined和null
var a = 123;
var str = a.toString();
注意:不能直接 123.toString(); 这样系统会认为是个 . 是小数,而不是当做调用方法
toString()可以进行进制转换
var str = a.toString(16); //转换为16进制
parseInt() 和 toString() 都能进行进制转换,但他们是有一个相反的过程的
parseInt("a",16);
parseInt()的最终结果都是 十进制 数字,参数 16 表示转换的值当前是16进制的
parseInt("1010101",2); //把二进制转换为十进制
toString()方法是把 十进制 转为其他进制,刚好和parseInt()相反。
var a = 123;
var str = a.toString(16);
str = a.toString(2); //把123转换为二进制。
5、转换为Boolean类型
var bool = Boolean(0); //在判断语句中会强转为Boolean类型。
if(bool){ //false }
二、隐式类型转换
1、判断是否为NaN
isNaN("123")//false
isNaN("abc")//true
isNaN函数的处理逻辑是:把值通过 Number()进行强转后,再与NaN比较,所以Number()转换后为NaN的值都会得到true
2、++ / --
同理,++或--运算中,会把值强制转换为数字 Number(),正负符号都会把值转为数字:符合Number()转换规则
var number = "123";
number ++; // 124
var number = "abc";
number ++;// NaN
var a = +"abc"; //NaN
var a = -"123abc"; //-123
3、 + - * / %
基础的数学运算符都符合Number()转换规则,需要注意的是这里并不是用来两个数运算,而是类似前缀一样的用法。
+"123" // 123
-"1" // -1
4、隐式转为boolean类型
除了下面列到的值,用在判断语句时,会转为Boolean类型中的false外,其他都为true
undefined // false
0 // false
NaN // false
'' // false
null // false
三、隐式类型转换的坏处
1 == "1"; //true
消除这种效果,全等于
1 === "1";//false
判断数值和类型都一致才为true。
注意:
null == undefined //true