Tag: 短路

JavaScript是否有“短路”评估?

可能重复: 作为一个if语句使用&&短路? JavaScript是否在布尔expression式中使用优化? 我想知道JavaScript是否有像C#中的&&运算符那样的“Short-circuit”评估 。 如果没有,我想知道是否有一个解决方法是合理的采用。

作为一个if语句使用&&短路?

我在jQuery.form.js源代码中看到了这一行: g && $.event.trigger("ajaxComplete", [xhr, s]); 我的第一个想法是wtf? 我的下一个想法是,我不能确定这是丑陋还是优雅。 我不是一个Javascript的大师,所以我的问题是双重的。 首先我要确认我的理解正确。 上面的行等价于: if (g) { $.event.trigger("ajaxComplete", [xhr, s]); } 其次是Javascript中这种常见/被接受的做法? 一方面它是简洁的,另一方面,如果你以前没有看过,它可能有点神秘。

为什么Java没有复合赋值版本的条件和条件或运算符? (&& =,|| =)

所以对于布尔型的二元运算符,Java有& , | , ^ , &&和|| 。 让我们总结一下他们在这里做的简要介绍: JLS 15.22.2布尔逻辑运算符&,^和| JLS 15.23有条件的和操作符&& JLS 15.24条件或运算符|| 对于& ,如果两个操作数值都为true ,则结果值为true ; 否则,结果是false 。 为| ,如果两个操作数的值均为false ,则结果值为false ; 否则,结果是true 。 对于^ ,如果操作数值不同,结果值为true ; 否则,结果是false 。 &&操作符就像&但是只有当其左侧操作数的值为true才会计算右侧的操作数。 || 运算符就像| 但是只有在其左手操作数的值为false时才计算其右手操作数。 现在,其中有5个有复合赋值版本,即|= , &=和^= 。 所以我的问题很明显:为什么Java不提供&&=和||=呢? 我发现我需要比我需要的&=和|= 。 我不认为“因为太长”是一个很好的答案,因为Java有>>>= 。 这个遗漏肯定有更好的理由。 从15.26分配操作员 : 有12个分配操作员; […] = *= /= %= += […]

PHP有短路评估吗?

给出以下代码: if (is_valid($string) && up_to_length($string) && file_exists($file)) { …… } 如果is_valid($string)返回false,那么php解释器是否仍然会检查up_to_length($string)类的条件? 如果是这样的话,为什么它不需要额外的工作呢?

VB.NET中的And和AndAlso有什么区别?

在VB.NET中, And和AndAlso什么AndAlso ? 我应该用哪个?

VB.NET中是否有条件的三元运算符?

在Perl(和其他语言)中,一个条件三元运算符可以表示如下: my $foo = $bar == $buz ? $cat : $dog; 在VB.NET中是否有类似的运算符?

是否对SQL WHERE子句进行短路评估?

例如: SELECT * FROM Table t WHERE @key IS NULL OR (@key IS NOT NULL AND @key = t.Key) 如果@key IS NULL的计算结果为true, 那么@key IS NOT NULL和@key = t.Key是否被评估? 如果否,为什么不呢? 如果是,是否有保证? 它是ANSI SQL的一部分还是数据库特定的? 如果数据库具体,SqlServer? 甲骨文? MySQL的? 参考: 短路评估

Python支持短路吗?

Python支持布尔expression式中的短路吗?

逻辑运算符的短路是强制的吗? 和评价顺序?

ANSI标准是否要求 C或C ++中的逻辑运算符被短路? 我很困惑,因为我记得K&R书上说你的代码不应该依赖这些被短路的操作,因为他们可能不会。 有人可以指出在标准的地方说逻辑运算总是短路? 我最感兴趣的是C ++,C的答案也会很棒。 我还记得阅读(不记得在哪里)评价顺序没有严格定义,所以你的代码不应该依赖或假定一个expression式中的函数将以特定的顺序执行:在声明的结尾,所有引用的函数将被调用,但编译器有自由select最有效的命令。 标准是否表明这个expression的评估顺序? if( functionA() && functionB() && functionC() ) cout<<"Hello world";