javascript 的数据类型转换详解

javascript 的数据类型转换详解

javascript的数据类型转换分为显示类型转换和隐式类型转换

1.显示类型转换

  • Number(s) : 转换为数字
var num = Number("123.12");  //num --> 123.12
var num = Number("-123.12"); //num --> -123.12
var num = Number(true);      //num --> 1
var num = Number(false);     //num --> 0
var num = Number(null);      //num --> 0
var num = Number(undefined); //num --> NaN
var num = Number("a");       //num --> NaN
var num = Number("12ab");    //num --> NaN
  • parseInt(string,radix) : 转换为整数(去尾法) radix : 2-36进制
//一个参数时,默认为十进制数
 var num = parseInt(123.98);     //num --> 123
 var num = parseInt("123.98");   //num --> 123
 var num = parseInt("100px");    //num --> 100
 var num = parseInt(true);       //num --> NaN
 var num = parseInt(false);      //num --> NaN
 var num = parseInt(null);       //num --> NaN
 var num = parseInt("a");        //num --> NaN
 
 //两个参数时,第二个参数表示进制,把字符串转换为整数后,
 //作为一个该进制的整数,再转化为十进制的数
 
 var num = parseInt("12.98",16);   //num --> 18
 //12.98 --> 12(16进制) --> 1*16^1 + 2*16^0 = 18
 
 var num = parseInt("11.98",2);    //num --> 3
 //11.98 --> 11(2进制) --> 1*2^1 + 1*2^0 = 3

 var num = parseInt("2a.8",16);    //num --> 42
 //"2a.8" --> 2a(16进制) --> 2*16^1 + 10*16^0 = 42
  • parseFloat(string) : 转换为浮点数
//遇到非数字和非首个小数点的就截去
 var num = parseFloat("123.98");     //num --> 123.98
 var num = parseFloat("123.98.2");   //num --> 123.98
 var num = parseFloat("123abc");    //num --> 123
 var num = parseFloat("123.98abc");  //num --> 123.98
  • String(s) : 转换为字符串
 var num = String(123.12);   //num --> "123.12"
 var num = String(true);     //num --> "true"
 var num = String(undefined);//num --> "undefined"
  • toString(radix) : 与String()差不多,用法不一样
    注意: undefined 和 null 不能用toString()
var a = 12;
var num = a.toString();//  num --> "123"
//radix为目标进制,转化为目标进制的数的字符串形式

var a = 12;             //12转换为8进制
var num = a.toString(8);//  num --> "14" 
  • Boolean(s) : 转换为布尔值
//0, null, NaN, undefined, 空字符串"" 都转换为false
 var num = Boolean(0);         //num --> false
 var num = Boolean(null);      //num --> false
 var num = Boolean("");        //num --> false
 var num = Boolean(undefined); //num --> false
 var num = Boolean(NaN);       //num --> false
 //除了以上几个外都转换为true

2.隐式类型转换

隐式类型转换就是javascript内部调用显示类型转换而得到的结果

  • isNaN(s) : 内部先调用Number(s)得到的结果再与 NaN比较
var num =isNaN("12ab");    // num --> true
var num =isNaN(undefined); // num --> true
var num =isNaN(null);      // num --> false
  • ++ / - - 和 +/ - (一元正负号) : 内部先调用Number(),再作运算
var num = "123";
num++;         //num --> 124 
+ num;         //num --> 123

var num = "123abc";
num++;         //num --> NaN
  • + (加号) : 当加号两侧有一个字符串就会内部调用String()
var str = 2 + "a";  //str --> "2a"
  • - (减号) * (乘号) / (除号) %(取模) :
    先符号两边调用Number(),再作运算
var num = "12" - 1;  //num --> 11
var num = "12" * 1;  //num --> 12
var num = "a" - 1;   //num --> NaN
var num = true - 1;  //num --> 0
var num = false - 1; //num --> -1
  • > < >= <= : 若一边为字符一边为数字则把字符转换为数字
    若两边均为字符则直接比较ASCII码值
var a = "2" > 1;        //a --> true;
var a = true >= false;  // a--> true; 
  • == 和 != :先把字符转换为数字
var num = "1" == 1;  //num --> true;
var num = "2" != 1;  //num --> true;
  • 不发生类型转换 : === 和 !== (类型也要相同)
var num = "1" === 1;  //num --> false;
  • 特殊情况 : null == undefined, NaN != NaN
var a = null == undefined;  //a --> true;
var a = NaN == NaN;         //a --> false;

大家好,我是LA,萌新一枚,平常主要写一些基础知识加深自己的印象,能和大家分享我也很高兴.我会尽力写一些能帮助到大家的文章,如果文章中有错误的地方,请各位前辈指出,我一定及时改正,希望能在这和大家一起学习,一起成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值