javascript - 此行中 AND 运算符的含义

标签 javascript

这段 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/

相关文章:

c# - 使用 Selenium Web Driver 注入(inject)自定义 JS 代码

javascript - 为什么是 $(function(){...})?

javascript - 从 ASP.NET 应用程序中的 javascript 获取数据

javascript - React 搜索栏在组件中的 Div 中搜索文本

javascript - 无法在 w3school 的 html 示例中的侧面板中完全向下滚动

javascript - Angular 中的 $q.all() 不能很好地解析

javascript - Jquery 文档准备好动态加载的 HTML 会提前触发

javascript - 按键盘箭头时转到链接

javascript - 将 React 组件构造函数作为属性传递给另一个组件时管理状态

javascript - 从 ionic 1 移动到 ionic 2