我并不是真正的 JavaScript 专家。我看到了这种语法:
a != b && (c = b);
有人可以向我解释一下吗?
提前致谢
如果a != b,分配b给c,返回c如果c是真的。
如果a不等于b,则赋值b给c。
如果左侧不是,则此处右侧不会评估true。
在您的示例中,结果将是 if a != bthen 分配b给c. c不处理是否为真的评估(在此示例中)。
if由于运算符短路,此语句的工作方式类似于速记语句。
使用逻辑 AND&&时,这意味着如果 AND 的左侧是 ANDfalse的右侧,则不会评估。因此,可以滥用逻辑 AND 来形成一种简写if语句。对于逻辑 OR,这也反过来发生,如果左侧评估为true,则右侧不会被评估(因为它不会改变整体结果)。在 C、JavaScript 和 Java 等语言中,您会发现这个操作符会短路怪癖。
如果变量a不等于变量b,则将变量分配b给变量c
它应该写成:
if (a != b) {
c = b;
}
该代码使用运算符的短路来&&进行流控制(即表达式的第二部分仅在第一部分为真时才计算),然后它使用赋值也是一个表达式的事实,以便能够在表达式,并忽略表达式的值。