【JavaScript】在JavaScript中使用switch(true)

开发专案时,在其中的某个环节,想说除了switch之外,是否有更好的写法,上网一查发现,还有switch(true)这种用法,感觉还蛮新奇的,第一次接触到的人或许会对expression里面怎会是true感到疑惑。

首先,我们先来讨论以下情境:
请依照分数高低,分配SABCD级距。

一般的情况都会这样写:

if (score === 100) {  level = 'S';} else if (score >= 90 && score < 100) {  level = 'A';} else if (score >= 80 && score < 90) {  level = 'B';} else if (score >= 70 && score < 80) {  level = 'C';} else if (score >= 60 && score < 70) {  level = 'D'} else {  level = '不及格'}

使用条件(三元)运算子,更简洁

level =  score === 100 ? 'S' : score >= 90 && score < 100 ?    'A' : score >= 80 && score < 90 ?      'B' : score >= 70 && score < 80 ?        'C' : score >= 60 && score < 70 ?          'D' : '不及格'

最后是今天要讨论的主题switch(true)

switch (true) {  case score === 100:    level = 'S';    break;  case score >= 90 && score < 100:    level = 'A';    break;  case score >= 80 && score < 90:    level = 'B';    break;  case score >= 70 && score < 80:    level = 'C';    break;  case score >= 60 && score < 70:    level = 'D';    break;  default:    level = '不及格';}

为何switch (true)可行,答案其实很简单:case条件是用来跟expression匹配的

switch不只是用来比对stringnumber,也可以比对boolean

至于可读性,第二种相对会比较差。

个人会比较喜欢第三种,你们觉得呢?


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章