【发布时间】:2013-10-18 12:12:30
【问题描述】:
在网上看了一些例子后,我收集了两种不同的解释:
例如:var x = A ||乙;
- 如果 A 存在而 B 不存在,则返回左侧。
- 如果 A 存在且 B 存在,则返回右侧(最后评估的值)。
基于该逻辑,我假设 x 将返回:v.item(0).click()。但是在测试它时,x 先返回 B,然后是 A,也就是解雇 B,然后也解雇 A。为什么? (http://jsfiddle.net/nysteve/QHumL/59/)
HTML:
<div class="indeed-apply-button" onclick="alert('BOOM BUTTON');">boo</div>
<div class='view_job_link' onclick="alert('BOOM LINK');">boo</div>
JavaScript
var v = document.getElementsByClassName('view_job_link');
var i = document.getElementsByClassName('indeed-apply-button');
var x = v.item(0).click() || i.item(0).click();
编辑 2013 年 10 月 10 日下午 1:02
没有提及我的真实意图,但根据回答和讨论,我的目标本质上是将下面这段代码转换为我最初提到的JavaScript代码。
var v = document.getElementsByClassName('view_job_link');
var i = document.getElementsByClassName('indeed-apply-button');
if(v){v.item(0).click();}
else if(i){i.item(0).click();}
else{}
在上面的代码中,您如何阅读 if(v){v.item(0).click();} 与短路?
【问题讨论】:
-
我不确定您所说的“存在”和“不存在”是什么意思,但使用
||来进行短路评估检查值的真实性。所以它正在检查调用.click()的结果的真实性 -
如果 A 是某种东西,那么 B 是什么或不是什么都无关紧要......
-
+1 用于清楚地说明您的问题,发布您的相关 html 和 JavaScript 代码,并包括一个工作小提琴来演示。
标签: javascript short-circuiting