-2

我并不是真正的 JavaScript 专家。我看到了这种语法: a != b && (c = b); 有人可以向我解释一下吗?

提前致谢

4

5 回答 5

4

如果a != b,分配bc,返回c如果c是真的。

于 2013-01-23T11:02:22.527 回答
2

如果a不等于b,则赋值bc

如果左侧不是,则此处右侧不会评估true

于 2013-01-23T11:01:45.513 回答
1

在您的示例中,结果将是 if a != bthen 分配bc. c不处理是否为真的评估(在此示例中)。

if由于运算符短路,此语句的工作方式类似于速记语句。

使用逻辑 AND&&时,这意味着如果 AND 的左侧是 ANDfalse的右侧,则不会评估。因此,可以滥用逻辑 AND 来形成一种简写if语句。对于逻辑 OR,这也反过来发生,如果左侧评估为true,则右侧不会被评估(因为它不会改变整体结果)。在 C、JavaScript 和 Java 等语言中,您会发现这个操作符会短路怪癖。

于 2013-01-23T11:17:51.420 回答
0

如果变量a不等于变量b,则将变量分配b给变量c

于 2013-01-23T11:08:24.103 回答
0

它应该写成:

if (a != b) {
  c = b;
}

该代码使用运算符的短路来&&进行流控制(即表达式的第二部分仅在第一部分为真时才计算),然后它使用赋值也是一个表达式的事实,以便能够在表达式,并忽略表达式的值。

于 2013-01-23T11:11:32.693 回答