{{ !$last && ', ' ||'.'}}这是作为三元运算符还是 if-else 条件工作



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

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

它是三元运算符的一种形式。 && 如果它是假值,则返回第一个操作数,如果第一个操作数为真,则返回第二个操作数,例如 1 && 3会返回30 && 3会返回0。如果第一个运算符是假的,则不计算第二个运算符。 ||类似,但如果它是真实的,则返回第一个操作数,如果第一个操作数是假的,则返回第二个操作数。

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

出于可读性原因,您应该始终首选三元运算器?:而不是布尔短循环运算符。

请注意

,这在&&只返回布尔值的语言中不起作用,比如 C 和 PHP。在那里,3 && 4返回 1/true ,因此您的代码将无法按预期工作。

在 JS 中,&& 返回第一个真值或false。因此3 && 4返回3并且您的代码工作正常。

另一件需要注意的事情是,当你希望&&的右侧是假的时:

cond() && false || true将始终返回 true。

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

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

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

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

最新更新