admin管理员组文章数量:1245901
It is my first time using the switch
statement in Javascript. Is there a way to evaluate multiple conditions one switch statement, like so:
var i = 1;
switch(i && random(1)<0.3) {
case (1):
//code block
break;
case (2):
//code block
}
So that the code blocks would execute if both of the conditions were true?
It is my first time using the switch
statement in Javascript. Is there a way to evaluate multiple conditions one switch statement, like so:
var i = 1;
switch(i && random(1)<0.3) {
case (1):
//code block
break;
case (2):
//code block
}
So that the code blocks would execute if both of the conditions were true?
Share Improve this question asked Jul 24, 2016 at 20:31 RomanRoman 3132 gold badges3 silver badges12 bronze badges 2- 1 So that the code blocks would execute if both of the conditions were true: both of them? When should only the first be executed, when only the second, and when none of them? – trincot Commented Jul 24, 2016 at 20:34
-
You might want to use
+
instead of&&
– Bergi Commented Jul 24, 2016 at 20:36
3 Answers
Reset to default 8It's possible to write switch statements this way:
switch (true) {
case a && b:
// do smth
break;
case a && !b:
// do other thing
break;
}
The only thing you need to keep in mind is that && can return not only boolean, but rather any other value if e.g. 'a' (in code snippet above) resolves to some false value. If 'b' is string - then a && b, where a is false, shall return a string.
So when you use this pattern always ensure that the right side of && expression resolves to a boolean.
You could do something like this:
var i = 1;
switch((i==1) + (Math.random(1)<0.3)*2) {
case 0:
//code block when neither is true
break;
case 1:
//code block when only i == 1
break;
case 2:
//code block when only random(1)<0.3
break;
case 3:
//code block when both i==1 and random(1)<0.3
break;
}
... but it is not really the nicest code, and can easily lead to mistakes when one of the tested expressions is anything else than 0 or 1 (false or true).
It is better to use if ... else
constructs to deal with this:
var i = 1;
var small = Math.random(1)<0.3;
if (i==1) {
if (small) {
//code block when both i==1 and random(1)<0.3
} else {
//code block when only i == 1
}
} else if (small) {
//code block when only random(1)<0.3
} else {
//code block when neither is true
}
You can do that but the switch statement will switch on the result of the expression you provide.
Given you have a logical and (&&
) in your expression there are two possible outes defined on how &&
works.
- if the left hand expression evaluates to true the expression will be equal to the evaluation of the second part.
- if the left hand expression evaluates to false the whole expression will evaluate to false.
You can read more about the switch statement on the Ecmascript spec
本文标签: javascriptmultiple expressions in one switch statementStack Overflow
版权声明:本文标题:javascript - multiple expressions in one switch statement - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1740238410a2246903.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论