javascript switch妙用,有需要的朋友可以参考下。
一般用法 var no = 4; switch ( no ) {
case 1 :
console.log('no = 1');
break;
case 2 :
console.log('no = 2');
break;
case 3 :
console.log('no = 3');
break;
case 4 :
console.log('no = 4');
break;
}
当指定的表达式的值与某个标签匹配时,即执行相应的一个或多个语句。 switch (expression) {
case label :
statementlist
case label :
statementlist
...
default :
statementlist
} 参数expression 要求值的表达式。 label 根据 expression 来匹配的标识符。如果 label ===expression,则立即从冒号后的 statementlist 处开始执行,直到遇到一个可选的break 语句,或到达 switch语句的最后。 statementlist 要被执行的一个或多个语句。
注意label===expression switch 的参数是个表达式,而不是一直认为的需判断的参数,所以可以以下这么用
//switch 参数 为 true
switch ( true ) {
case no < 3 :
console.log( 'no < 3' );
break;
case no === 3 :
console.log( 'no = 3' );
break;
case no > 3 :
console.log( 'no > 3' );
break;
}
//switch 参数 为 false
switch ( false ) {
case typeof no !== 'number' :
console.log( 'no is number' );
break;
case no === 4 :
console.log( 'no = 4' );
break;
}
学东西还是得先看文档来! 这样的写法已经完全可以替换if elseif 了吧(现在经常有文章提倡switch 取代 if elseif)?本人觉得每样东西都有它存在的价值的,请看 var no = 4,
total = 0;
function test() {
++total;
return no;
}
switch ( true ) {
case test() === 1 : //别这没写 test()应该先用变量缓存起来,这里用于测试 switch 判断没满足条件时会一直执行,直到break
console.log('no = 1');
break;
case test() === 2 :
console.log('no = 2');
break;
case test() === 3 :
console.log('no = 3');
break;
case test() === 4 :
console.log('no = 4');
break;
}
console.log(total) //4 switch 判断了4次了
if elseif 有时是无法用switch替代的
|