JS中数据类型的转换


暂不讨论Object

数据类型转换指将一个数据类型强制转换为其他数据类型。
类型转换主要指将 其他的数据类型 转换为 String , Number, Boolean 类型

其他数据类型转换为 String 类型:

调用 toString()方法

toString()方法不会影响原数据,返回一个新数据
Number 类型的 toString() 方法两种模式,即默认模式基模式
null和undefined没有toString方法,调用时会报错。

    var a = 0.01;
    console.log(typeof a);  //number
    // a.toString(); 这样写的话不会转换成功
    a = a.toString();
    console.log(a);  //0.01
    console.log(typeof a);  //string
var iNum = 10;
alert(iNum.toString(2));	// "1010"
alert(iNum.toString(8));	// "12"
alert(iNum.toString(16));	// "A"
var iNum1 = 10;
var iNum2 = 10.0;
alert(iNum1.toString());	// "10"
alert(iNum2.toString());	// "10"

调用String()函数,将要转换的数据作为参数传入

String()函数不会影响原数据,返回一个新数据
对于Boolean和Number,调用toString()方法
对于null和undefined,分别返回“null”和“undefined”的字符串形式

    var b = true;
    b = String(b);
    console.log(typeof b); //string
    b = null;
    b = String(b);
    console.log(typeof  b);  //string

使用 + 操作符

是一种隐式转换,由浏览器完成,实际上是使用了String()函数。

    console.log(undefined + ""); //"undefined"
    console.log(1 + "");   //"1"

其他数据类型转换为 Number类型:

有很多种情况,纯数字的字符串,完全没有数字的字符串,以数字开头的不是纯数字的字符串,不是以数字开头的不是纯数字的字符串,true,false,null,undefined等等等等。

使用Number函数

我们可以直接在控制台写JS代码

  • 空字符串
    转换为0
    var a = Number("");
    var b = Number("    1");
    var c = Number("    ");
    console.log(a,typeof a);  //0 number
    console.log(b,typeof b);  //1 number
    console.log(c, typeof c);  //0 number
  • 纯数字字符串转为数字:
    不管是整数,还是浮点数,都能正确转换
    // 纯数字的字符串
    var a = Number("123.456");
    console.log(a);  //123.456
    console.log(typeof a);  //number
    var b = Number("123");
    console.log(b);  //123
    console.log(typeof b);  //number
  • 完全没有数字的字符串转为数字:
    转换为NaN
//    完全没有数字的字符串
    var a = Number("adb.c%");
    var b = Number("$%^*)(");
    var c = Number("          w12");
    console.log(a);  //NaN
    console.log(b);  //NaN
    console.log(c);  //NaN
    console.log(typeof a);  //number
    console.log(typeof b);  //number
  • 以数字开头的不是纯数字的字符串:
    转换为NaN
    注意,c不是一个数字,因为一个数字只能有一个小数点。
//    以数字开头的不是纯数字的字符串
    var a = Number("123.0adg");
    var b = Number("123.456asd");
    var c = Number("456.123.2");
    console.log(a,b,c); //NaN NaN NaN
  • 不是数字开头的不是纯数字的字符串:
    可以预见,也是转换为NaN
    var a = Number(".adg123");
    var b = Number("asd123.456");
    var c = Number("uio.123");
    console.log(a,b,c); //NaN NaN NaN
  • true和false:
    true:转换为1
    false:转换为0
    图片.png

  • null 和 undefined:
    null:0
    undefined: NaN

    var a = Number(undefined);
    var b = Number(null)
    console.log(a,typeof a)  //NaN number
    console.log(b,typeof b)  //0 number

使用parseInt() 和parseFloat()函数转为Number

parseInt():将一串字符串从左到右解析,直到找到一个字符是无效数字为止,小数点也是无效数字。
parseFloat():将一串字符串从左到右解析,直到找到一个字符是无效数字为止,第一个小数点是有效的,第二个小数点是无效数字。
parseInt() 方法有基模式,parseFloat()则没有。
对于parseInt(“010”),有的浏览器会当成10进制去解析,有的会当成八进制解析,最好采用基模式

    console.log(parseInt("12345red"));	//12345
    console.log(parseInt("0xA"));	//10
    console.log(parseInt("56.9"));	//56
    console.log(parseInt(""));	//NaN
    console.log(parseInt("010"), parseInt("010",8), parseInt("010",10));  //10 8 10
//对于parseInt("010"),有的浏览器会当成10进制去解析,有的会当成八进制解析,最好采用基模式
    console.log(parseFloat("12345red"));	// 12345
    console.log(parseFloat("0xA"));	// 0
    console.log(parseFloat("11.2"));	// 11.2
    console.log(parseFloat("11.22.33"));	// 11.22
    console.log(parseFloat("0102"));	// 102
    console.log(parseFloat("red"));	// NaN
    console.log(parseFloat(" "));  // NaN

总结:

1.使用Number函数

  • 纯数字的字符串转为对应数字
  • 非纯数字的字符串转为NaN
  • 空串或者全是空格的字符串,转换为0
  • true转为 1,false 转为 0
  • null转为0,undefined:转为NaN

2.parseInt()

3.parseFloat()

4.隐式的转换:A-0,A/1,A*1 ,+A(一元运算符的加号)
相当于调用了Number()函数

其他数据类型转换为 Boolean类型:

Boolean()函数

总的规则:

  • 除了空字符串,其余都是true
  • 除了0 和NaN,其余都是true
  • null和undefined,转为false
  • 对象转换为true
   var a = "";  //false
    var b = "  ";  //true
    var c = 0;  //false
    var d = 1;  //true
    var e = "0";  //true
    var f = "1p";  //true
    var g = "eee"; //true
    var h = true;  //true
    var i = Infinity;  //true
    var j = NaN;  //false
    var k = {};  //true
    var l = null;  //false
    var m = undefined;  //false
    console.log(Boolean(a), Boolean(b), Boolean(c), Boolean(d), Boolean(e),
    Boolean(f), Boolean(g),Boolean(h), Boolean(i), Boolean(j), Boolean(k), Boolean(l), Boolean(m));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值