在使用 switch
来判断条件时,通常以一个变数来比对多种可能值,例如:
function checkColor(color){ switch(color){ case 'Red': return 'Red' case 'Green': return 'Green' case 'Blue': return 'Blue' default: return 'Others' }}
而当我们想利用 switch
来判断表达式时该怎么做呢?
先来个错误示範:
function checkAge(age){ switch(age){ case (age > 18): console.log('case 1') break case (age == 18): console.log('case 2') break case (age < 18): console.log('case 3') break default: console.log("didn't match any one") break }}checkAge(12) // didn't match any one
这是因为 switch
比对条件的过程相当于
age === (age > 18)// 12 === true // return false
因此判断的结果自动 Fall back 到 default 去了
也因为这个特性,所以可以倒过来用一个结果值来比对多种条件:
function checkAge(age){ switch(true){ // 这行是关键,帮你画重点 case (age > 18): console.log('case 1') break case (age == 18): console.log('case 2') break case (age < 18): console.log('case 3') break default: console.log("didn't match any one") break }}checkAge(12) // case 3
知道这点以后,就可以用 switch
来做跟 if...else
一样的事啰!