我正在使用AngularJS开发一个应用程序。我使用了if-else
条件和三元运算符。找到代码{{ !$last && ', ' || '.'}}
后,在每个条目后放置,
,在结尾放置.
。它工作正常,但我对其工作流程感到困惑。它是否像if-else
条件或三元运算符一样工作?我的整个例子如下。
<span data-ng-repeat="allSuppliers in vm.allIncentiveSuppliers | unique:'supplierName'">
{{allSuppliers.supplierName }}{{ !$last && ', ' || '.'}}
</span>
答案 0 :(得分:1)
它是三元运算符的一种形式。 1 && 3
如果是假值则返回第一个操作数,如果第一个操作数是真实的,则返回第二个操作数,例如3
将返回0 && 3
,但0
将返回||
。如果首先是假的,则不评估第二个运算符。 cond && val1 || val2
类似但如果它是真正的则返回第一个操作数,如果第一个是假的则返回第二个操作数。
因此cond ? val1 : val2
在val1
是真值的条件下基本上等同于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 ? '.' : ','}}