JS基础数据类型转换( 2 )
###数据类型转换
(一)强制转换(显示转换)
( 1 )parseInt( );转换为整数
let str = "123.123.123";
let num = parseInt(str);
console.log(num);
parseFloat( );转换为浮点小数
let str = "123.123.123";
let num = parseFloat(str);
console.log(num);
规则:从左到右从第一个数开始确定是否是数字,如果不是就直接转换结束(只看部分)
Number();将任意类转换为数字类型
规则:
1 ) 布尔值 true:1 flase :0 ;
2 )undefined : NaN ;
3 )unll : 0 ;
4 ) 字符串(string ) : 空字符串 (“ ”): 0 ;
规则:看整体 比如123abc,就直接转换为NaN ;
( 2 ) 强制转换为字符串
String () ;输出结果直接加引号,任何人类型都可以转换
let a = 123 ;
String(a);
console.log( String(a));
toString () ;输出结果直接加引号,不能转换undefined 和null ,其他的都可以
let a = 123 ;
let str = a.toString();
console.log( toString(str));
( 3 ) 强制转换为布尔
Boolean( ) ;
转换规则:false " "(空字符串) 0 NaN null undefined 结果为false , 其他结果全部都为 true
console.log( Boolean(" "));
二 自动转换 (隐式转换)
( 1 )isNaN ( ) ; 在判断为非数字之前,自动调用Number( );方法将数据转换
console.log(isNaN (true)); 结果为false,因为true用数字转换为1
( 2 )++ -- :在加(减)之前,自动调用Number( );方法将数据转换
let a = "2px";
a -- ;
console.log(a, typeof a ); 结果NaN number
####将其他类型转换为数字类型,且值不变
let a = "200" ;
a = a - 0;
console.log(a, typeof a ); 结果200 number
( 3 )+ :只要有一个字符串就做拼接,自动调用String( ); 当没有字符串时,其他数据调用Number( );转换为数字进行运算
####若想让一个类型变为字符串,直接在后面拼接一个空字符串
let a = 1 ;
let b = true ;
console.log(typeof (true+ " ")) ;
( 4 )逻辑运算(也叫短路运算)
console.log(typeof (0||2||3) ; 结果为2
或 || 主要是找真的(true)调用Boolean( ); 自动转换,找到true 就停止寻找 ,如果没有true ,则输出最后一个
与 && 主要是找假的(false) 同或规则相同
非 ! 同或规则相同
console.log(! " ") ; 结果为true
( 5 )比较大小时,将其转换为Number( );再进行比较
console.log("ba">"bb");
ask:每个字母都有一个大小值,越靠前越小,小写大于大写
###二 条件判断语句
( 1 )if
if(判断条件){ (一定是boolean值,如果不是会按Boolean() ;转换
条件为真时,执行的代码
}
let num = 5;
if(num>20){
consile.log("进入if");
}
consile.log("hello");
( 2 )if .....else
if(判断条件){ (一定是boolean值,如果不是会按Boolean() ;转换
条件为真时,执行的代码
} else{
条件为真时,执行的代码
}
let score = 65 ;
if(score>=60){
consile.log("及格");
} else{
consile.log("不及格");
}
( 3 )if ....else if 只要有一个成立,后面就不会运行了,只执行一个
if(判断条件1){ (一定是boolean值,如果不是会按Boolean() ;转换
条件为真时,执行的代码
} else if(判断条件2){
条件为真时,执行的代码
} else if(判断条件3){
条件为真时,执行的代码
}
.....可以有多个else if
let num = 0;
if(num > 1){
console.log('进入第一个代码块');
} else if(num > 3){
console.log('进入第二个代码块');
} else if(num > 10){
console.log('进入第三个代码块');
} else {
console.log('前面所有条件都为假');
}
( 4 )switch 那表达式1同表达式2,3....依次比较(严格等)相等后,会执行其表达式后面的语句,以及后面的全部语句,所以会在每个表达式后面加break;(酌情而定)
swicth (表达式1) {
case 表达式2:语句1 (都是默认为字符串,如果类型不符,需要转换)
break;
case 表达式3:语句2
break;
case 表达式4:语句3
break;
case 表达式5:语句4
break;
....
default:语句5
}
let a = '1';
switch (a) {
case 1: {
console.log('a等于1');
console.log('a等于1');
console.log('a等于1');
console.log('a等于1');
console.log('a等于1');
break;
}
case 2:
console.log('a等于2');
break;
case 'hello':
console.log('a等于hello');
break;
default:
console.log('前面所有的case都不匹配');
}