0

我在 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;

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

我知道 If 语句有时可能对此更好,但这不是问题所在。提前感谢您的帮助。

4

1 回答 1

0

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

另一个人发布了一个答案,指出这种情况下的语法不正确且不允许。

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

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

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

不管你喜不喜欢(所以不是一个辩论论坛)......确实是允许的。

于 2013-09-29T14:13:34.563 回答