【问题标题】:Javascript check if target contains class with switch-case instead of if elseJavascript检查目标是否包含带有switch-case而不是if else的类
【发布时间】:2021-09-30 15:41:44
【问题描述】:

目前我有一个代码结构:

if(target.classList.contains('animate-heading')){

}else if(target.classList.contains('animate-text')){

}else if(target.classList.contains('animate-buttons')){

}else if(target.classList.contains('image-rotating-animation')){

}else if(target.classList.contains('plans-heading-animation')){

}else if(target.classList.contains('plans-animation')){

}else if(target.classList.contains('animate-masonry')){

}

我想用 switch-case 语句替换,可以吗?提前致谢!

【问题讨论】:

  • 不是真的,因为 switch 在匹配的字符串上运行,而您没有匹配字符串。可以做到,但几乎与您所拥有的完全一样。
  • "我想用 switch-case 语句替换它" - 你为什么要这样做?不像switch 在这里更干净。
  • 这些条件块的实际代码内容是什么?

标签: javascript if-statement switch-statement


【解决方案1】:

Switch 会检查是否完全匹配,因此您实际上无法进行任何匹配。您可以将其作为开关中的真实检查来执行,但它并不比 if/else if 更干净

const classList = target.classList

switch (true) {
  case classList.contains('animate-heading'):
  break;
  case classList.contains('animate-text'):
  break;
} 

【讨论】:

  • 这看起来实际上是一个很好的解决方案。切换“if/else if”的一个好处是,如果您不使用 break 语句,则 switch 将允许从一种情况切换到另一种情况。
猜你喜欢
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-20
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
相关资源
最近更新 更多