这不是确切的使用场景,但我想知道是否有可能将值传递给switch语句而无需重新键入switch()
部分中的内容。
示例:
switch(someObject.withSomevalue*(Math.random()*11)) {
case 1 : alert("one");
// more cases here
default: alert(theNumberThatWasPassed);
}
如果我们再次运行Math.random()
,我们将获得另一个可以满足其中一个案例的随机数,因此调用switch(x)语句中调用的aws不是一个选项。我只是将它存储在一个变量 - x = someObject.withSomevalue*(Math.random()*11)
中 - 然后将其传递给那个switch(x)
的交换机,但我想知道是否有可能将值传递给交换机内的交换机言。
答案 0 :(得分:5)
正如其他人所指出的那样,你必须将它保存在一个变量中。但是您可以在表达式中执行以下操作,但我不知道跨浏览器如何兼容:
switch(x = <your expression>){
//
default:alert(x);
}
至少可以保存一行代码。
答案 1 :(得分:2)
在切换之前将其捕获到变量中并使用该变量。
var myValue = someObject.withSomevalue*(Math.random()*11); switch(myValue) { case 1 : alert("one"); // more cases here default: alert(myValue); }
答案 2 :(得分:2)
这与询问您是否可以找到if(Math.random()){...}
的值相同。答案是否定的,因为它们是语言结构,而不是函数。
答案 3 :(得分:0)
我想说你最好的选择就是做你目前正在做的事情,并在switch语句之前将其捕获到变量中。除了保存一行代码之外,你有什么理由不想这样做吗?
答案 4 :(得分:0)
有趣...... OP,我正在试着看你的思考过程。也许只写出你认为它应该是什么样的代码(忽略它首先不起作用)。
更新
至少在C / C ++中,你只需要形成另一个块就可以在交换机中访问var:
...
{
var mySwitchVar = blah;
switch(mySwitchVar) {
case blah blah blah:
default blah blah:
}
}
...