2016-02-22 2 views
1

Я разрабатываю приложение с помощью AngularJS. Я использовал условия if-else и тройной оператор. Как только я нашел код {{ !$last && ', ' || '.'}}, введите , после каждой записи и . в конце. Он работает нормально, но у меня есть путаница в его рабочем процессе. Работает ли он как состояние if-else или тройной оператор? Весь мой пример такой, как показано ниже.

<span data-ng-repeat="allSuppliers in vm.allIncentiveSuppliers | unique:'supplierName'"> 
    {{allSuppliers.supplierName }}{{ !$last && ', ' || '.'}} 
</span> 

ответ

1

Это форма тернарного оператора. && возвращает первый операнд, если это значение фальши и второй операнд, если первый операнд правдивый, например. 1 && 3 вернется 3, но 0 && 3 вернет 0. Второй оператор не оценивается, если он является фальшивым. || аналогичен, но возвращает первый операнд, если он правдивый и второй операнд, если он сначала является ложным.

Так что в основном cond && val1 || val2 эквивалентен cond ? val1 : val2 при условии, что val1 - правдивая ценность. Если это не так, например. cond && 0 || 1 это всегда будет возвращать последнее значение 1 в этом случае.

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

+0

Можем ли мы использовать тот же метод во всех технологиях? –

+0

Что значит? – csharpfolk

+0

Средство на всех языках, таких как C, PHP и т. Д. В соответствии с ответом Ven я получил его. –

0

Будьте осторожны, что это не будет работать на языках, где && возвращает только логическое значение, такое как C и PHP. Там 3 && 4 возвращает 1/true, поэтому ваш код не будет работать должным образом.

В JS && возвращает первое правное значение или false. Итак, 3 && 4 возвращает 3, и ваш код работает нормально.

Другое дело, быть осторожным, когда вы хотите && «s правая сторона будет falsy:

cond() && false || true будет всегда возвращение правда.

0

Тернарный оператор в основном является сокращением для условия if-else. Таким образом, приведенный вами синтаксис можно назвать и тем, и другим.

Другие varients этого выражения может быть:

{{ !$last ? ', ' : '.'}} 

Или

{{ $last ? '.' : ','}} 
Смежные вопросы