Как написать в сокращенной форме, если / еще, если / еще?

Есть ли сокращение для оператора if / else if / else? Например, я знаю, что есть один для оператора if / else:

var n = $("#example div").length;
$("body").css("background", (n < 2) ? "green" : "orange");

Но как мне написать следующее в сокращенном синтаксисе, как выше?

var n = $("#example div").length;

if (n < 2) {
    $("body").css("background", "green");
}
else if (n > 2) {
    $("body").css("background", "blue");
}
else {
    $("body").css("background", "orange");
}

4 ответа

Решение

Он существует, но настоятельно рекомендуется ООН, потому что его довольно сложно читать и поддерживать.

var n = $("#example div").length,
    color;

color = (n < 2) ? 'green' : 
        (n > 2) ? 'blue'  : 'orange';

$("body").css("background", color);

Там нет стенографии.

Я также хотел бы отметить, что оператор?: Не является сокращением. Одно - выражение, другое - утверждение.

Если вы все равно хотите сделать этот код более кратким, я бы предложил избавиться от скобок:

if (n < 2)      $("body").css("background", "green");
else if (n > 2) $("body").css("background", "blue");
else            $("body").css("background", "orange");

Тройки хороши, если вы используете разрывы строк:

$( 'body' ).css( 'background',
      (n < 2) ? 'green'
    : (n > 2) ? 'blue'
    :           'orange'
);

У каждого свои синтаксические предпочтения, но я думаю, что это отлично читается.

Вы можете использовать троичный для этого, но я бы рекомендовал против (это плохой стиль). Вы также можете перейти с оператором switch:

switch(true) {
    case (n<2):
        $("body").css("background", "green");
        break;
    case (n>2):
        $("body").css("background", "blue");
        break;
    default:
       $("body").css("background", "orange");
}

Но это не лучше, чем просто придерживаться if

Другие вопросы по тегам