今天一个菜,菜是好菜,就是硬了点儿。
先认识个新朋友:typeof():
typeof()上场就放出number、string、boolean、undefined、object、function六个大招。
然并卵,耍来耍去都是字符串类型。
跟二哥有什么关系呢?
传说Javascript有两件法宝:显示类型转换、隐式类型转换。
索性就把typeof()拿来鉴宝吧。
数据不好好待着,换来换去换啥呢?
旧彩电换洗脸盆,当然是用啊!!!
一、显示类型转换:
Number(demo):尽量把demo转换成数字,转不成的就去当number类型的NaN。例如undefined
parseInt(demo):把demo转换成整数
parseInt(demo, radix):以radix(2-36)进制为基底,把demo转换成十进制数字
parseFloat(demo):把demo转换成浮点数
console.log(Number(undefined));//NaN
console.log(Number(false));//0
console.log(parseInt('100px'));//100
console.log(parseInt('123.3.5'));//123
console.log(parseInt('a15', 16));//2581
console.log(parseFloat('123.3.5'));//123.3
var num = 123.3567148
console.log(num.toFixed(3));//123.357
//都是number类型
String(demo) : 把demo转换成字符串
demo.toString(radix) : 把demo转换成radix进制的数,null / undefined不争气,不能调用toString
var demo = 12345;
console.log(String(demo));//12345
console.log(demo.toString(16));//3039
//都是字符串类型
Boolean(demo) :把demo转换成布尔值
console.log(Boolean(undefined));//false
console.log(Boolean(' '));//true
二、隐式类型转换
isNaN(demo):Number(demo)转换后的结果和NaN比对,返回布尔值
++/-- +/-(一元正负) -*/%:都隐式调用Number()
+加号:调用String()
console.log(isNaN(undefined));//true
console.log(isNaN('123abc'));//true
console.log(isNaN('123'));//false
console.log(1 + '2' + '2');//122
console.log(1 + +'2' + '2');//32
console.log(1 + -'1' + '2');//02
console.log(+'1' + '1' + '2');//112
console.log('A' - 'B' + '2');//NaN2
console.log(typeof('A' - 'B' + 2));//NaN,number类型
&&、||、!:调用Boolean()
var str = false + 1;
console.log(str);
var demo = false == 1;
console.log(demo);
if(typeof(a)&&-true + (+undefined) + ''){
console.log('基础扎实');
}
if(11 + '11' * 2 == 33){
console.log('基础扎实');
}
!!' ' + !!'' - !!false || console.log('你觉得能出来,你就是猪!');
特殊的<、>、<=、>=、==、!=
三、不发生类型转换的:===、!==
以上内容属二哥原创,整理自 "渡一教育Javascript课程" ,一个值得推荐的"渡一教育"。