jQuery Используя диапазоны в случаях переключателя?

Если мы используем ключевое слово в качестве названия идентификатора, мы получаем ошибку компилятора “identifier ожидаемый, ‘Identifier Name’ является keyword”, Чтобы преодолеть эту ошибку, снабдить префиксом идентификатор “@”. Такие идентификаторы являются дословными идентификаторами. Символ не является на самом деле частью идентификатора, таким образом, идентификатор мог бы рассматриваться на других языках как нормальный идентификатор без префикса

6
задан drummer 24 October 2009 в 02:07
поделиться

4 ответа

вы можете попробовать злоупотребить переключателем, вызывающим провал

var x = 5;
switch (x) {
    case  1: case 2: case 3: case 4: ...
        break;
    case 13: case 14: case 15: ...
        break;
    ...
}

, который очень многословен

, или вы можете попробовать это

function checkRange(x, n, m) {
    if (x >= n && x <= m) { return x; }
    else { return !x; }
}

var x = 5;
switch (x) {
    case checkRange(x, 1, 12):
        //do something
        break;
    case checkRange(x, 13, 19):
    ...
}

, чтобы получить желаемое поведение. Причина, по которой я возвращаю ! X в else из checkRange, состоит в том, чтобы предотвратить проблему, когда вы передаете undefined в оператор switch. если ваша функция возвращает undefined (как в примере jdk) и вы передаете undefined в переключатель, то будет выполнен первый случай. ! X гарантированно не равно x при любом тесте на равенство, поэтому оператор switch выбирает, какой случай выполнить.

14
ответ дан 8 December 2019 в 05:55
поделиться

Нет, для этого вам нужно использовать серию if / else if. JavaScript не такой уж фантастический. (Языков немного.)

0
ответ дан 8 December 2019 в 05:55
поделиться

Вы можете делать интересные кладжи. Например, чтобы проверить число по диапазону с помощью переключателя JavaScript, можно написать пользовательскую функцию. В основном, функция test дает значение n и возвращает его, если оно находится в диапазоне. В противном случае возвращается undefined или какое-то другое фиктивное значение.

<script>

// Custom Checking Function..
function inRangeInclusive(start, end, value) {
    if (value <= end && value >= start)
        return value; // return given value
    return undefined; 
}

// CODE TO TEST FUNCTION
var num = 3;
switch(num) {
case undefined:
    //do something with this 'special' value returned by the inRangeInclusive(..) fn
    break;
case inRangeInclusive(1, 10, num):
    alert('in range');
    break;
default:
    alert('not in range');
    break;
}

</script>

Это работает в Google Chrome. Я не тестировал другие браузеры.

1
ответ дан 8 December 2019 в 05:55
поделиться

Опоздал на вечеринку, но в поисках ответа на тот же вопрос наткнулся на эту тему. В настоящее время я действительно использую переключатель, но по-другому. Например:

switch(true) {
    case (x >= 1 && x <= 12):
        //do some stuff
        break;
    case (x >= 13 && x <= 19):
        //do some other stuff                
        break;
    default:
        //do default stuff
        break;
}

Я считаю, что это гораздо легче читать, чем набор операторов IF.

7
ответ дан 8 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

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