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

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

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

var a=1,b={},c=[1,2,3],d='123',e='abc',f=true,g='false',h=undefined;
function aa(){console.log(111);return 1}

console.log(
   typeof(a),//'number'
typeof(b),//'object'
typeof(c),//'object'
typeof(d),//'string'
typeof(e),//'string'
typeof(f),//'boolean'
typeof(g),//'string'
typeof(h),//'undefined'
typeof(aa),//'function'
typeof(aa()),//打印出了111,'number',函数未执行判断的是函数类型,执行后,判断的是函数返回值
typeof(null)//'object'  null比较特殊,由于最开始js是将null当做空对象占位符导致判断类型,null是object 
);
console.log(typeof(typeof(a))//a到aa的上述任一变量以两个typeof输出都是string,因为一次typeof返回的就是'XXX'

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

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

var a='abc',b='123',c='12a3',d='a123',e=undefined,f=null;
console.log(Number(a),Number(b),Number(c),Number(d),Number(e),Number(f));//NaN 123 NaN NaN NaN 0

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

var a='abc',b='123.12',c='12a3.2',d='a123',e=undefined,f=null;
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

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

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

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

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

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

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

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

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

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

console.log('a'>'123');//true
console.log('a'>123,'a'<123,a==123);//false false false
console.log(NaN>123,NaN<123,NaN==123,NaN==NaN);//false false false

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

console.log([]==!![]);//false
Number([]);//0
Boolean([]);//true
var a=[];var b=a;
console.log(a==b,[]==[]);//true  false  说明在数组对比的时候,其实对比的是引用的地址


猜你喜欢

转载自blog.csdn.net/github_39132847/article/details/79591857