作为一个if语句使用&&短路?
我在jQuery.form.js
源代码中看到了这一行:
g && $.event.trigger("ajaxComplete", [xhr, s]);
我的第一个想法是wtf?
我的下一个想法是,我不能确定这是丑陋还是优雅。
我不是一个Javascript的大师,所以我的问题是双重的。 首先我要确认我的理解正确。 上面的行等价于:
if (g) { $.event.trigger("ajaxComplete", [xhr, s]); }
其次是Javascript中这种常见/被接受的做法? 一方面它是简洁的,另一方面,如果你以前没有看过,它可能有点神秘。
是的,你的两个例子是相同的。 它在几乎所有的语言中都是这样工作的,但在Javascript中变得相当习惯。 我个人认为在某些情况下是好的,但可以在其他情况下被滥用。 尽pipe这个时间确实短一些,但是为了尽量减lessJavascript的加载时间,
另请参阅有人可以解释John Resig的pretty.js JavaScript是如何工作的?
这是标准的,但是JSLint和JSHint都不是这样的:
期望一个赋值或函数调用,而是看到一个expression式。
你必须小心,因为这个短路可以绕过,如果有||
在条件:
false && true || true > true
为了避免这种情况,请确保将条件分组:
false && (true || true) > false
是的,这相当于你写的。 这当然不是一个不常见的做法。 是否接受取决于谁是(或不是)正在接受…
是的,你明白(在这方面); 是的,这是JavaScript的标准做法。