Mar*_*rko 36 javascript case switch-statement
我正在尝试创建一个switch语句但我似乎无法使用得到评估的表达式(而不是设置字符串/整数).我可以使用if语句轻松完成此操作,但希望案例更快.
我正在尝试以下方法
function reward(amount) {
var $reward = $("#reward");
switch (amount) {
case (amount >= 7500 && amount < 10000):
$reward.text("Play Station 3");
break;
case (amount >= 10000 && amount < 15000):
$reward.text("XBOX 360");
break;
case (amount >= 15000):
$reward.text("iMac");
break;
default:
$reward.text("No reward");
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我错过了一些明显的东西,或者这是不可能的?谷歌在这种情况下并不友善.
任何帮助/指针赞赏
中号
Moo*_*Goo 113
你可以随时做
switch (true) {
case (amount >= 7500 && amount < 10000):
//code
break;
case (amount >= 10000 && amount < 15000):
//code
break;
//etc...
Run Code Online (Sandbox Code Playgroud)
它的工作原理是因为它true是一个常量,所以将执行第一个case语句下的代码,其表达式的计算结果为true.
我觉得这有点"棘手",但我觉得使用它并没有错.一个简单的if/else陈述可能会更简洁,你不必担心意外跌倒.但无论如何它仍然存在.
ruf*_*fin 11
@ MooGoo switch (true)会Weird condition在jsLint中给你一个错误,所以如果这是一个问题,让我们更有创意,而且,我认为,增加可读性.
因此,我们不能评估如果每个case为true或false; 我们正在比较它case的价值是否等于我们的switch期限.因此,如果条件为真,if我们可以通过在我们的case语句中添加简写并返回原始切换项来利用它.
我还包括一个真实世界的例子,你想要有两个"默认值" - 如果你的术语在正面方向上超出你的"重要"范围,那么就是一个,如果你处于负面,则另一个方向.
关键词:
case (x > 0 ? x : null):
"如果我的任期,x大于零,则返回x以便x === x我接受案例分支."
http://jsfiddle.net/rufwork/upGH6/1/
/*global document*/
/*jslint evil:true*/
var x = 10;
switch (x) {
case (x > 0 ? x : null):
document.write('ha ha ha! I fooled switch AND jsLint! Muhahahahaha!');
break;
case 0:
document.write('zero is nothing.');
break;
case -1:
document.write('low');
break;
case -2:
document.write('lower');
break;
case -3:
document.write('lowest I care about');
break;
default: // anything lower than -3.
document.write('TOO LOW!!!! (unless you cheated and didn\'t use an int)');
}
document.write('<br>done.');
Run Code Online (Sandbox Code Playgroud)
Dan*_*ite 10
这不是一个switch块如何工作.所述case用于保持一个单一的值,如果它们是相等的值switch线.if-else陈述将很好地为您服务.
以下是有关该switch块的一些信息.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/switch