H5学习---Javascript---显示,隐式转换 if switch case

隐式转换

var a = "2", b = 2;
console.log(a + b  )    // 22
console.log(a == b)     // true
console.log(a * b)      // 4
console.log(a - 0 + b)  // 4
console.log(a / b)      // 1
console.log(a % b)      // 0

数字和字符串相加,数字会隐式转换为字符串来拼接
数字和字符串相减,字符串转成数字,如果转换不成功得到NaN
* / % 都具有减号这样的功能
==具有隐式类型转换的功能,会把数字转成字符串再比较
===不具有隐式转换功能

显式转换

parseInt()、parseFloat()、Number()、toString()、String()

toFixed()可以用来将数字保留几位小数,并且数据类型变为字符串

var a = 2, b = '2';
a + parseInt(b)  === 4  // true
parseInt("20b3")       	// 20
parseInt("b20")       	// NaN
parseInt("20.99")    	// 20

parseFloat("11.22.33")  // 11.22
parseFloat("11.212be")  // 11.212

Number() 是一个非常严格的转换,只要不满足数字,都会直接转换为NaN
Number("20b3")       //  NaN
Number("b20")        //  NaN
Number("20.99")      //  20.99
Number("20")         //  20

NaN:Not a Number

方法 parseInt() 和 parseFloat() 在不能解析指定的字符串时就返回NaN
isNaN(num)函数,该函数判断num变量的值是否是NaN,是NaN返回true,数字返回false

ECMAScript 中可用的 3 种强制类型转换如下:

Boolean(value) - 把给定的值转换成 Boolean 型;
Number(value) - 把给定的值转换成数字(可以是整数或浮点数);
String(value) - 把给定的值转换成字符串;

运算符的简写

赋值运算简写

+=、-=、*=、/=

a = a + 1       a += 1
a = a  - 1      a  -= 1
a = a  * 1      a  *= 1
a = a  / 1      a  /= 1
a++    a += 1   a = a + 1
a--    a -= 1   a = a - 1

自增自减前置后置是不一样的,前置是先加后用,后置的先用后加。
JS的小数运算有时候并不是那么精确,但是损失的精度一般也在可承受范围之内
alert(0.7+0.1);  //输出0.7999999999999999
alert(0.6+0.2);  //输出0.8;

if — 判断逻辑,如果

if(true){
    //会执行的语句
}
if(false){
    //会跳过不执行的语句
}
if(判断条件){ //当if括号中结果为true时执行语句1,否则执行语句2
    //语句1
}else{
    //语句2
}
if(判断条件1){ //当条件1结果为true时执行语句1
    //语句1
}else if(判断条件2){ //当条件1结果为false而且条件2结果为true时执行语句2
    //语句2
}else{ //当条件1条件2结果都为false时执行语句3
    //语句3
}

if括号中只需要布尔类型值。那么在if判断中,所有的数据类型都会被隐式转换为布尔类型。
注意:0、-0、null、""、false、undefined 或者 NaN在if条件里结果为false

隐式类型转换

 除了+运算符具有两层含义以外,- * /只有数学意义
 所以当进行- * /运算的时候默认会将运算符两侧的数据类型隐式转换为数字类型,再进行运算。
 
var a = 2, b = "2";
if(a == b){
    alert("a和b相等");    // 会弹  
}
if(a === b){
    alert("a和b相等");    // 不会弹  
}
if(1 == true){
    alert("数字1是true");
}
if(a = b){
    alert("a和b相等");
}
//一个等号代表赋值操作,结果为等号右边的值

switch case 多分支语句

switch(语句){  //语句的结果与每一条case内容进行匹配
	case 1:
		alert(1);
		break;
	case 2:
		alert(2);
		break;
	case 3:
		alert(3);
		break;
	default:
		alert(0);
}

注意switch的应用场景(有多个确定值需要判断的时候);
注意case穿透,要加break语句(如果程序没有发现break语句,那么解析器会继续向下解析);
可以运用case穿透进行代码缩减
var a = 1;
switch(a){ 
    case 1:
       alert(1);
    case 2:
        alert(2);
    case 3:
        alert(3);
    default:
        alert(0);
}
每一个alert都会被执行,而且alert会阻断程序进程

switch (表达式) {
   case 值1:
   	当表达式匹配上当前这个值1的时候执行的代码
    break
  case 值2:
   	当表达式匹配上当前这个值2的时候执行的代码
     break
   ....
   default:
    	如果前面的case一个都不满足就走这里
}

switch语句更适用于一个表达式有多个分散值的情况.
如果是区间判断if更合适,但是很多时候if和switch是可以互相替换的
switch比较都是全等匹配,没有类型转换
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值