1.首先要清除表达式如果不是布尔值就会隐式转换为布尔值 if(表达式){ 满足条件后执行的语句块 } 2.如果条件后执行的语句块仅有一句,可以省略{}
if(a>5){ b=6; } 可以省略为 if(a>5) b=6;【注】意味着条件后的一句表达式为满足条件该条件执行,其他不执行 例:if(a>5) b=6; a++;// 满足条件,只是执行了b= 6 但不会执行a++; 也就是: if(a>5){ b=6; } a++;
switch(){ case 1 : break; case 2 : break; case 3 : break; case 4 : break; default:
} 1.break表示跳出该循环 2.结束是需要break如果没有break就会向下继续执行,直到遇到break或者全部执行完毕 2.如果没有break,完成下一个内容穿越时,不需要判断是否与该值相同,这种情况叫穿越 3.switch中表达式可以是任何内容,重要的是表达式返回的值 4.switch是一个判断是否绝对相等的条件,因此不能做其他类型的判断 5.default一般写在switch最后,并且一般不加break switch可以在内容与if等语句混合使用
【注】switch语句多用于状态机。 一个案例:让红色的方块上下左右移动: style: div1{ width:50px; height:50px; position:absolute; top:0px; left:0px; background:red; }
script: var div1 = document.getElementbyID(" div1 "); const LEFT=“left”, TOP = “top”, RIGHT = “right”, BOTTOM = “bottom”; var status = RIGHT; var x = 0,y = 0; setInterval(function(){ switch(status){ case RIGHT: x++; if(x>1000)status = BOTTOM; break; case BOTTOM: y++; if(y>500) status=LEFT; break; case LEFT: x–; if(x<=0) status=TOP; break; case TOP: y–; if(y<=0) status=RIGHT; break; } div1.style.left = x+“px”; div1.style.top= y+“px”; },16)
16的意思为没16ms触发一次switch语句,16ms约为一秒钟60帧频。
switch语句没有break的话就会发生穿越: 直传就意味着 或 穿越过程中会经历代码 减少重复代码的目的,要注意代码经过是必须执行的,所以要多考虑执行的顺序和必要性 var a=3; var b; switch(a){ case 3: a++; case 4: b=10; break; }
因为switch语句本身就是一个绝对相等,所以不支持隐式转换,判断是后边的内容需要主动转换为Boolean 例: var a = 95; switch(true){ case a>=90&&a<=100 break; case a>=80: break; case a>=70: break; case a>=60: break; default : }
1、两种语句都有可能进入 if(a>3){
} if(a>4){ } 2.仅进入第一个或者第二个
if(a>7){
} else if(a>10){ }
3.进入的顺序是表达式先后的顺序 var a = 4; switch (true) { case a > 4: console.log(“aaa”); case a > 3: console.log(“bbb”); break; }