Reputation: 3674
This isn't the exact use scenario but I was wondering if it was possible to get the value passed to the switch statement without having to retype what is in the switch()
part.
Example :
switch(someObject.withSomevalue*(Math.random()*11)) {
case 1 : alert("one");
// more cases here
default: alert(theNumberThatWasPassed);
}
If we run the Math.random()
again we'll get another random number that very well could meet one of the cases, so calling what aws called in the switch(x) statement isn't an option. I've been just storing it in a variable - x = someObject.withSomevalue*(Math.random()*11)
- and then passing it to the switch that way switch(x)
, but I was wondering if it's possible to get the value passed to the switch within the switch statement.
Upvotes: 4
Views: 1133
Reputation: 33
Interesting... OP, I'm trying to look at your thought process. Maybe just write out the code how you think it should look like (ignoring that it wouldn't work in the first place).
update:
At least in C/C++, you can just form another block to have the var only be accessible within the switch:
...
{
var mySwitchVar = blah;
switch(mySwitchVar) {
case blah blah blah:
default blah blah:
}
}
...
Upvotes: 0
Reputation: 103145
As everyone else pointed out you have to save it in a variable. But you can do the following in the expression though I do not know how cross browser compatible this is:
switch(x = <your expression>){
//
default:alert(x);
}
and at least you save one line of code.
Upvotes: 5
Reputation: 44346
This is the same as asking if you can find the values for if(Math.random()){...}
. The answer is no, because they are language constructs, and not functions.
Upvotes: 2
Reputation: 908
I would say your best bet would be to do what you currently are doing, and capture it into the variable before the switch statement. Is there any reason you would not want to do this besides saving a line of code?
Upvotes: 0
Reputation: 21880
Just capture it into a variable before the switch and use that variable.
var myValue = someObject.withSomevalue*(Math.random()*11); switch(myValue) { case 1 : alert("one"); // more cases here default: alert(myValue); }
Upvotes: 2