{{!$ last&& ','|| '。'}}这是三元运算符或if-else条件

时间:2016-02-22 08:44:19

标签: angularjs

我正在使用AngularJS开发一个应用程序。我使用了if-else条件和三元运算符。找到代码{{ !$last && ', ' || '.'}}后,在每个条目后放置,,在结尾放置.。它工作正常,但我对其工作流程感到困惑。它是否像if-else条件或三元运算符一样工作?我的整个例子如下。

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

3 个答案:

答案 0 :(得分:1)

它是三元运算符的一种形式。 1 && 3如果是假值则返回第一个操作数,如果第一个操作数是真实的,则返回第二个操作数,例如3将返回0 && 3,但0将返回||。如果首先是假的,则不评估第二个运算符。 cond && val1 || val2类似但如果它是真正的则返回第一个操作数,如果第一个是假的则返回第二个操作数。

因此cond ? val1 : val2val1是真值的条件下基本上等同于cond && 0 || 1。如果不是这种情况,例如1在这种情况下,这将始终返回最后一个值?:

出于可读性原因,您应该总是更喜欢三元opreator {{1}}而不是布尔短路操作符。

答案 1 :(得分:0)

要小心,这不会在<style> #myDiv { background-url(image-data); } </style> <div id="myDiv" > </div> 仅返回布尔值(如C和PHP)的语言中工作。在那里,&&会返回3 && 4 / 1,因此您的代码无法按预期工作。

在JS中,true返回第一个真值或&&。因此false会返回3 && 4,您的代码也能正常运行。

另外要注意的是,当你希望3的右手边是假的时候:

&&始终返回true。

答案 2 :(得分:0)

三元运算符基本上是if-else条件的简写。因此,您提供的语法可以称为两者。

该表达式的其他变体可以是:

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

或者

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