这段 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 语句。如果 jQuery(this).hasClass("free-content")
返回真值,它会将 c
设置为 0
。
相当于:
if (jQuery(this).hasClass("free-content")) {
c = 0;
}
你想知道这意味着什么实际上是我不喜欢这种类型的编码并认为这是一种不好的做法的原因。它难以阅读并且会造成混淆,而这反过来又会产生错误。
还值得注意的是 AND 返回什么逻辑,如果你想使用返回值:
(Logical AND) Returns expr1 if it can be converted to false; otherwise, returns expr2. Thus, when used with Boolean values, && returns true if both operands are true; otherwise, returns false.
这里有一个例子,在我看来,这是一个糟糕的代码,因为它很难理解:
var foo = bar && baz || qux;
上面的代码等价于:
var foo;
if (bar && baz) {
foo = baz;
} else {
foo = qux;
}
总结:不要将逻辑运算符用作替换 IF 语句或保存击键的漂亮方法。它很可能会回来咬你或其他人的屁股。
我知道会有人反对我(通常是因为 ASI 而不想使用分号的人),但是编写只有专家才能理解的代码是一个非常糟糕的主意。没有人反对它。
关于javascript - 此行中 AND 运算符的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22249457/