【发布时间】:2013-10-24 17:15:45
【问题描述】:
我想要一些关于如何瘦身这个开关的建议:
switch (lotUser | winningLot) {
case lotUser === winningLot[0]:
case lotUser === winningLot[1]:
case lotUser === winningLot[2]:
case lotUser === winningLot[3]:
case lotUser === winningLot[4]:
case lotUser === winningLot[5]:
case lotUser === winningLot[6]:
case lotUser === winningLot[7]:
console.log("You win!");
break;
default:
console.log("You do not win!");
break;
}
代替
case lotUser === winningLot[0]:
我写的脚本是:
switch (lotUser | winnendLot) {
case lotUser === winnendLot[0|1|2|3|4|5|6|7]:
console.log("You win!");
break;
default:
console.log("You do not win!");
break;
}
我只是不知道这是否按我希望的方式工作。它需要检查生成的 lotUser 是否等于数组中的一个值(winningLot)。如果 lotUser 等于winningLot 数组中的一个或多个值,它应该输出“You win!”。 有人可以确认我的代码符合我给出的描述吗?
【问题讨论】:
-
这不会做你想做的事。第一个脚本更接近使用开关的正确方法。它很冗长,但它是正确的方法。此外,您正在滥用
|字符。它是按位或运算。所以你实际上是在运算符之间做一些数学运算,而不是选择一个或另一个 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… -
你误解了'|'操作员。这是一个二元 OR 运算符。你将永远在你的代码中需要这个,除非你知道你这样做。
-
@PatrickGunderson:你建议如何让它变得苗条和一口大小?
-
|是二进制或。0|1|2|3|4|5|6|7将始终等于7,因此这是您的第一个问题。 -
@JohannBehrens 您的第一个代码是正确的(尽管第一行中有
|)。它没有比这更多的一口大小了。
标签: javascript arrays switch-statement