js---数据类型转换,typeof

js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object)。

1.typeof------判断后返回的都是字符串类型("string"  "number" "undefined"  "object"  "function"  "boolean")

[javascript]  view plain  copy
  1.   
[javascript]  view plain  copy
  1. var a=1,b={},c=[1,2,3],d='123',e='abc',f=true,g='false',h=undefined;  
  2. function aa(){console.log(111);return 1}  
  3.   
  4. console.log(  
  5.    typeof(a),//'number'  
[javascript]  view plain  copy
  1. typeof(b),//'object'  
  2. typeof(c),//'object'  
  3. typeof(d),//'string'  
  4. typeof(e),//'string'  
  5. typeof(f),//'boolean'  
  6. typeof(g),//'string'  
  7. typeof(h),//'undefined'  
  8. typeof(aa),//'function'  
  9. typeof(aa()),//打印出了111,'number',函数未执行判断的是函数类型,执行后,判断的是函数返回值  
  10. typeof(null)//'object'  null比较特殊,由于最开始js是将null当做空对象占位符导致判断类型,null是object   
);
[javascript]  view plain  copy
  1. console.log(typeof(typeof(a))//a到aa的上述任一变量以两个typeof输出都是string,因为一次typeof返回的就是'XXX'  

2.显示转换---Number() , parseInt() , parseFloat() , String() , toString() 

Number()的目的是为了把值转换为数字,undefined转不成数字最后是NaN

[javascript]  view plain  copy
  1. var a='abc',b='123',c='12a3',d='a123',e=undefined,f=null;  
  2. console.log(Number(a),Number(b),Number(c),Number(d),Number(e),Number(f));//NaN 123 NaN NaN NaN 0  

parseInt()的目的是取第一个不是数字之前的数,再转换为数字类型

[javascript]  view plain  copy
  1. var a='abc',b='123.12',c='12a3.2',d='a123',e=undefined,f=null;  
  2. console.log(parseInt(a),parseInt(b),parseInt(c),parseInt(d),parseInt(e),parseInt(f));//NaN 123 12 NaN NaN NaN  

var num = parseInt(value,radix)---以radix为基准进制的数(value)转换为十进制的数num

[javascript]  view plain  copy
  1. var num=101;  
  2. console.log(parseInt(num,2));//5   2的2次方+1  就是说num是2进制下的数字,parseInt将num从二进制转换为十进制  

num.toString(radix)----num由十进制转换成radix进制的数

[javascript]  view plain  copy
  1. var num=27;  
  2. console.log(num.toString(16));//1b   16进制中a是10,b是11...依次类推到15是f,16就进一位  

例子:二进制数1010转换为16进制---可以用十进制过度

[javascript]  view plain  copy
  1. var num=1010;  
  2. var num1=parseInt(num,2);//二进制数转为十进制  10  
  3. console.log(num1.toString(16));//十进制数转为16进制  a  
3.隐式转换

isNaN(num)----会先Number(num)---再与NaN对比

num++  num--会先将Number(num),再运算处理(正负号,减乘除模都是先处理成Number类型)

数字和字符串对比('a'>'123'),会优先转换为Number,无法转换的时候变成NaN,对比;如果对比字符串和字符串,会对比acs码。

NaN不等于任何数,不小于任何数,不大于任何数

[javascript]  view plain  copy
  1. console.log('a'>'123');//true  
  2. console.log('a'>123,'a'<123,a==123);//false false false  
  3. console.log(NaN>123,NaN<123,NaN==123,NaN==NaN);//false false false  

神奇的隐式转换----!会将[]转换为boolean类型的值即false,再!就是true;而等号等除了加号的运算符会优先转换为Number类型,true转为1,[]转为数字是0.注意:[]==[]是false,[]==![]是true.

[javascript]  view plain  copy
  1. console.log([]==!![]);//false  
  2. Number([]);//0  
  3. Boolean([]);//true  
  4. var a=[];var b=a;  
  5. console.log(a==b,[]==[]);//true  false  说明在数组对比的时候,其实对比的是引用的地址  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值