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