js基本数据类型之间的转换

Posted 钊梦林

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js基本数据类型之间的转换相关的知识,希望对你有一定的参考价值。

常见五大基本数据类型

1.number

2.string

3.boolean

4.undefined

5.null

一.转换为string

①调用toString() 方法

因为null和undefined没有toString()方法,所以,不能通过这样的方式进行转换。

//number类型转换成String
var a = 123;
var b = a.toString();
console.log(typeof b + " " + b);   //string  123

//Boolean类型转换成String
a = true;
b = a.toString();
console.log(typeof b + " " + b);   //string true
②通过String()函数
//undefined类型转换成String
var a;
var b = String(a);
console.log(typeof b + " " + b);   //string  undefined

//null类型转换成String
a = null;
b = String(a);
console.log(typeof b + " " + b);   //string  null

//number类型转换成String
a = 123;
b = String(a);
console.log(typeof b + " " + b);   //string  123

//Boolean类型转换成String
a = true;
b = a.toString();
console.log(typeof b + " " + b);   //string  true
③加一个空字符串( + “ ” )
//undefined类型转换成String
var a;
var b = a + "";
console.log(typeof b + " " + b);   //string  undefined

//null类型转换成String
a = null;
b = a + "";
console.log(typeof b + " " + b);   //string  null

//number类型转换成String
a = 123;
b = a + "";
console.log(typeof b + " " + b);   //string  123

//Boolean类型转换成String
a = true;
b = a + "";
console.log(typeof b + " " + b);   //string  true

二.转换成number类型

①使用Number()函数
//字符串转数字
        //纯数字字符串,直接转
        var a = "123";
        var b = Number(a);
        console.log(typeof b + " " + b);   //number  123

        //含有非数字字符,转换为NaN
        a = "123x";
        b = Number(a);
        console.log(typeof b + " " + b);   //number  NaN

//布尔值转数字 true转为1,false转为0
        var a = true;
        var b = Number(a);
        console.log(typeof b + " " + b);   //number  1

        a = false;
        b = Number(a);
        console.log(typeof b + " " + b);   //number  0


//null转为0
        var a = null;
        var b = Number(a);
        console.log(typeof b + " " + b);   //number  0


//undefined转换为NaN
        var a;
        var b = Number(a);
        console.log(typeof b + " " + b);   //number  NaN
②使用parseInt() 或 parseFloat() 函数

和Number()的不同

  1. 对于非字符串类型,先转换为字符串

  2. 从左向右遍历字符串,直到碰到非数字字符进行“截断”;如果第一个字符就是非数字字符,转换为NaN

parseInt()方法首先查看位置0处的 字符,判断它是否是个有效数字;如果不是,该方法将返回NaN,不再继续执行其他操作。但如果该字符是有效数字,该方法将查看位置1处的字符,进行同样的 测试。这一过程将持续到发现非有效数字的字符为止,此时parseInt()将把该字符之前的字符串转换成数字。

parseInt("1234blue");//return 1234
parseInt("22.5");// return 22  对于整数来说,小数点是无效字符
parseInt("blue");//return  NaN

//parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由parseInt()方法的第二个参数指定的。

  //例如:
parseInt("AF",16); //return 175 十六进制
parseInt("10",2);//return 2 二进制
parseInt("10",8);//return 8 八进制
parseInt("10",10);//return 10 十进制

//如果十进制数包含前导0,那么最好采用基数10,这样才不会意外地得到八进制的值。

  //例如:
parseInt("010");//return 8
parseInt("010",8);//return 8
parseInt("010",10);//return 10


parseFloat(),从位置0开始查看每个字符,直到找到第一个非有效的字符为止,然后把该字 符之前的字符串转换成数字。

不过,对于这个方法来说,第一个出现的小数点是有效字符。如果有两个小数点,第二个小数点将被看作无效的。

使用parseFloat()方法的另一不同之处在于,字符串必须以十进制形式表示浮点数,而不能用八进制形式或十六进制形式。

parseFloat("1234blue");//return 1234

parseFloat("22.34.5");//return 22.34

parseFloat("0908");//return 908

parseFloat("blue");//return NaN
③通过一元运算符 + (正号)
//undefined转number
var a;
var b = +a;
console.log(typeof b + " " + b);   //number  NaN

//null转number
a = null;
b = +a;
console.log(typeof b + " " + b);   //number  0

//boolean转number
a = true;
b = +a;
console.log(typeof b + " " + b);   //number  1

//string转number
a = "123";
b = +a;
console.log(typeof b + " " + b);   //number  123

//string转number
a = "123A";
b = +a;
console.log(typeof b + " " + b);   //number  NaN

三.转换为Boolean

①通过Boolean()函数

共五种情况为false的情况,其他均为true

Boolean(0)             //转换为false

Boolean(NaN)           //转换为false

Boolean("")(空串)     //转换为false

Boolan(null)           //转换为false

Boolean(undefined)     //转换为false
②两次取反!!

与使用Boolean()结果一致

以上是关于js基本数据类型之间的转换的主要内容,如果未能解决你的问题,请参考以下文章

JS系列:js数据类型的转换

JS的数据类型判断函数数组对象结构处理日期转换函数,浏览器类型判断函数合集

第二十一节,基本数据类型,之间的区别

java基础---------基本数据类型之间的转换基本数据类型与String间的转换

js之数据类型的比较

JS-数据类型之间的转换