В Javascript можно ли ставить троичный оператор `?` На следующей строке? - PullRequest
31 голосов
/ 31 августа 2011

Мне действительно нравится выравнивание? и: моего троичного оператора, когда они не помещаются на линии, например:

var myVar = (condition
    ? ifTrue
    : ifFalse
);

Однако JSHint жалуется с:

Плохой разрыв строки перед '?'

Зачем JSHint иметь это предупреждение? Есть ли какая-нибудь неприятность (например, вставка точки с запятой и т. Д.), От которой он защищает меня, или я могу безопасно изменить конфигурацию JSHINT, чтобы игнорировать ее?

Ответы [ 4 ]

24 голосов
/ 31 августа 2011

ОБНОВЛЕНИЕ : Этот ответ устарел.Очевидно, Крокфорд передумал;)

См. @ 1005 * ответ @1005 * * Cheap6 * * * * * * * * * * * * * * * * * * * * * * *1003* * * * * * * * * *1003* * * * * * * * 1013:

Поместите разрыв после оператора, в идеале после запятой.Разрыв после оператора уменьшает вероятность того, что ошибка копирования-вставки будет замаскирована вставкой точки с запятой.

Итак:

// this is ok
var myVar = (condition ?
    ifTrue : 
    ifFalse
);

Если вы запустите этот пример кода через JSHint,это пройдет:

// this is ok
var myVar = (1==1 ?
    true : 
    false
);

20 голосов
/ 31 августа 2011

Это работает и, безусловно, действует.Это особенно полезно в более сложных случаях использования, таких как вложенные.

var a = test1
         ? b
         : test2
            ? c
            : d;
13 голосов
/ 17 марта 2017

За Крокфорд

Тернарный оператор может быть визуально запутанным, так? вопросительный знак всегда начинается с строки и увеличивает отступ на 4 пробела, и: двоеточие всегда начинается строкой, выровненной с? вопросительный знак. условие должно быть завернуто в парень.

var integer = function (
    value,
    default_value
) {
    value = resolve(value);
    return (typeof value === "number")
        ? Math.floor(value)
        : (typeof value === "string")
            ? value.charCodeAt(0)
            : default_value;
};
5 голосов
/ 31 августа 2011

Вы должны поставить оператора в конец строки.Таким образом, становится более очевидным, что положение продолжается до следующей строки.

...