获取传递给switch语句的变量

时间:2010-11-08 18:01:35

标签: javascript jquery

这不是确切的使用场景,但我想知道是否有可能将值传递给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)的交换机,但我想知道是否有可能将值传递给交换机内的交换机言。

5 个答案:

答案 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:
    }
}
...