我遇到了一个问题,我在这句话<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app" ng-controller="ctrl" id="div">
Visible
<div ng-hide="true">Text</div>
</div>
<button onclick="printDiv()">Print</button>
正如我所知道的?的关联性来自左边
这是示例
A? 'True': 'False'
=回答&#39; c&#39;
(1 == 2)?'a':(2==3)?'b':'c'
=回答&#39; b&#39;
正如我所知(1 == 2)?'a':(2==2)?'b':'c'
,然后它进入错误状态(1 == 2)==false
并且返回错误,所以答案是c(可能是错误的,请纠正我)
以上示例工作正常,但
时开始出错 (2==3)
=回答&#39; b&#39;
(1 == 1)?'a':(2==3)?'b':'c'
=回答&#39; b&#39;
据我所知
(1 == 1)?'a':(2==2)?'b':'c'
,所以它应该选择&#39; a&#39;并忽略其余部分。
参考: http://php.net/manual/en/language.operators.precedence.php
答案 0 :(得分:7)
嵌套三元组可能会出现问题,因为很难读取正在发生的事情。包围正确解决了这个问题:
(1 === 1) ? 'a' : ((2==3) ? 'b' : 'c')
如下所示:如果1等于1则a,否则执行2等于3。
答案 1 :(得分:2)
在您的语句(1 == 1) ? 'a' : (2 == 3) ? 'b' : 'c'
中,第一个条件语句确实返回'a'
,但由于在您的第一个条件语句之后还有另一个条件语句,它希望将'a'
与true
进行比较或false
。由于条件语句中的string
将始终返回true
,因此第二个条件语句将返回'b'
。
您将要使用以下语句:
(1 == 1) ? 'a' : ((2 == 3) ? 'b' : 'c')