此JavaScript代码中&&的含义是什么?
function doIt(a) {
var b = a.parents(),
c = 1;
return b.each(function() {
jQuery(this).hasClass("free-content") && (c = 0)
}), c
}
通常我会认为这将是一个逻辑运算符AND,但是我无法弄清楚它在这行中的作用。
在这种情况下,逻辑AND运算符用于代替IF语句。它将设置c
为0
ifjQuery(this).hasClass("free-content")
返回真实值。
等效于:
if (jQuery(this).hasClass("free-content")) {
c = 0;
}
您想知道这实际上是我不喜欢这种编码的原因,并认为这是一种不好的做法。它很难阅读,并且可能造成混乱,进而造成错误。
如果您要使用返回的值,还应该注意逻辑与返回的内容:
(逻辑与)如果可以将其转换为false,则返回expr1;否则返回false。否则,返回expr2。因此,当与布尔值一起使用时,&&如果两个操作数都为true,则返回true;否则,返回false。
在我看来,以下示例显示了错误的代码,因为它很难遵循:
var foo = bar && baz || qux;
上面的代码等效于:
var foo;
if (bar && baz) {
foo = baz;
} else {
foo = qux;
}
总结:不要使用逻辑运算符作为一个漂亮的方式来代替if语句或保存按键。它很可能会回来咬你或别人的屁股。
我知道会有人对此表示反对(通常是因为ASI不想使用分号的人),但是编写只有专家才能理解的代码是一个非常糟糕的主意。没有反对的说法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句