Как написать в сокращенной форме, если / еще, если / еще?
Есть ли сокращение для оператора 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