在JavaScript中切换案例计算

时间:2013-09-29 13:43:44

标签: javascript

我在javascript中遇到问题,想知道是否可以做这样的事情或者是错误:

for (var i = 1; i <= nUnits.length; i++)
{
    switch (true)
    {
        case i % fDivisor === 0 && i % bDivisor === 0: //Note the modulus
            nUnits[i].push("FB");
            alert("FB");
            break;
        case i % fDivisor === 0:
            nUnits[i].push("F");
            alert("F");
            break;
        case i % bDivisor === 0:
            nUnits[i].push("B");
            alert("B");
            break;
        default:
            nUnits[i].push(i);
            alert(i);
            break;
    }
}

我一直在网上查看我是否可以像这样对案例进行计算,但我看到的只是转换中的表达式。

我也试过这样的变种:

case (((i % fDivisor) === 0) && ((i % bDivisor) === 0)): //Note the modulus
    nUnits[i].push("FB");
    alert("FB");
    break;
case ((i % fDivisor) === 0):
    nUnits[i].push("F");
    alert("F");
    break;

我想知道这是否真的是有效的语法。

我理解,如果陈述有时可能更好,但这不是问题。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我看到人们投票决定关闭这个有效的问题所以我会回答它,因为我使用SO作为我自己的参考。

另一个人发布了一个答案,说明案例中的语法不正确且不允许。

在该答案的评论中,海报提供了一个指向JSFiddle的链接,证明了这种语法是正确的。它可能不太好,但它是允许的。然后发布答案的人删除了它。同时删除评论和链接。我希望提供链接的人会在问题结束前将其作为答案发布,我会删除并接受他的。

这回答了我的问题。这是:

在这种情况下(不是开关)允许这样的“计算”(非逻辑运算)。 (注意问题不是辩论它是否好)。但它的语法是否正确,是否允许?

无论你喜不喜欢(SO不是辩论论坛)......确实允许。