我遇到了这段代码:
<a ng-click= "item.statusId !== itemStatus.in || transfer()">
我想我们可以概括为:
<element ng-click = "someVar !== someValue || doStuff()">
一旦我知道他们叫什么,我就找到了这个article on short circuits和另一个more focused one。但是,我仍然没有得到它。
如果第一个语句的计算结果为true,它是否基本上符合OR语句结束评估的原则?因此,如果第一个语句为真,则结束评估,如果结果为假,则在OR语句的后半部分运行该函数? (这是我要问的主要问题,其他一切都是额外的)。
我想我得到的部分是编译器是否以不同方式解释此代码,或者它仍然评估为false并且只运行该函数。甚至不确定如何短语Q.
答案 0 :(得分:3)
如果第一个语句的计算结果为true,它是否基本上符合OR语句结束评估的原则?因此,如果第一个语句为真,则结束评估,如果为假,则在OR语句的后半部分运行该函数?
它是if语句的有效简写,你正确地理解了它的工作原理。有关JavaScript中短路评估的更多详细信息,请参阅this Stack Overflow question。
答案 1 :(得分:1)