Случай переключателя с условиями

Я пишу корректный случай переключателя?

var cnt = $("#div1 p").length;
                alert(cnt);
                switch (cnt) {
                    case (cnt >= 10 && cnt <= 20):
                        alert('10');
                        break;
                    case (cnt >= 21 && cnt <= 30):
                       alert('21');
                        break;
                    case (cnt >= 31 && cnt <= 40):
               alert('31');
                        break;
                    default:
                        alert('>41');
                }

По некоторым причинам предупреждение не происходит, когда условия подобраны!

38
задан Jamiec 31 January 2018 в 16:43
поделиться

4 ответа

В этом сценарии не следует использовать переключатель . Это правильный подход:

var cnt = $("#div1 p").length;

alert(cnt);

if (cnt >= 10 && cnt <= 20)
{
   alert('10');
}
else if (cnt >= 21 && cnt <= 30)
{
   alert('21');
}
else if (cnt >= 31 && cnt <= 40)
{
   alert('31');
}
else 
{
   alert('>41');
}
29
ответ дан 27 November 2019 в 02:59
поделиться

Вы ищите (0) или (1) результаты.

(cnt> = 10 && cnt <= 20) возвращает либо истину, либо ложь.

- изменить - вы не можете использовать case с логическими (логическими) выражениями. Оператор cnt> = 10 возвращает ноль для false или один для true. Следовательно, это будет регистр (1) или случай (0), которые никогда не будут соответствовать длине. - изменить -

7
ответ дан 27 November 2019 в 02:59
поделиться

Это должно работать с этим:

var cnt = $("#div1 p").length;

            switch (true) {
                case (cnt >= 10 && cnt <= 20):
                    alert('10');
                    break;
                case (cnt >= 21 && cnt <= 30):
                   alert('21');
                    break;
                case (cnt >= 31 && cnt <= 40):
                    break;
                default:
                    alert('>41');
            }
24
ответ дан 27 November 2019 в 02:59
поделиться

Коммутатор сравнивает значение в switch () с каждым случаем .

switch (cnt) {
    case 1: ....
    case 2: ....
    case 3: ....
}

работает так:

if (cnt == 1) ...
if (cnt == 2) ...
if (cnt == 3) ...

Следовательно, у вас не может быть никакой логики в операторах case.

switch (cnt) {
    case (cnt >= 10 && cnt <= 20): ...
}

работает так же, как

if (cnt == (cnt >= 10 && cnt <= 20)) ...

, и это ерунда. :)

Используйте вместо него if () {} else if () {} else {} .

87
ответ дан 27 November 2019 в 02:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: