问题标签 [short-circuiting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
12 回答
164899 浏览

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

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

0 投票
2 回答
687 浏览

javascript - ActionScript/JavaScript 中的短路运算符在哪里?

像 VB 有运算符AndAlsoOrElse,它们执行短路逻辑连接,在 JS / AS 中哪里可以找到等效的运算符?

0 投票
3 回答
3751 浏览

vb6 - 为什么短路不是 VB 中的默认行为?

VB 有运算符AndAlsoOrElse,它们执行短路逻辑连接。

为什么这不是AndOr表达式的默认行为,因为短路在每种情况下都很有用。

奇怪的是,这与&&||的大多数语言相反。进行短路。

0 投票
6 回答
8109 浏览

ruby-on-rails - 如何避免短路评估

我正在使用 Ruby on Rails 并想验证两种不同的模型:

但是,“&&”运算符使用短路评估(即,仅当“model1.valid?”为真时才评估“model2.valid?”),这会阻止在model1 无效时执行model2.valids。

是否存在不使用短路评估的“&&”等价物?我需要评估这两个表达式。

0 投票
3 回答
4387 浏览

sql - COALESCE - 保证短路?

这个问题一个关于使用 COALESCE简化复杂逻辑树的简洁答案。我考虑了短路的问题。

例如,在大多数语言的函数中,参数都经过完全评估,然后传递给函数。在 C 中:

这似乎不是COALESCESQL Server 中“函数”的限制:

如果它在分母 = 0 时评估第二种情况,我预计会看到如下错误:

我发现了一些与Oracle 相关的内容。以及一些使用SQL Server的测试。当您包含用户定义的函数时,看起来短路可能会发生故障。

那么,这种行为是否应该由 ANSI 标准来保证?

0 投票
2 回答
5968 浏览

sql-server - MSSQL 上标量 UDF 中的 NULL 参数

如果参数为空,则标量 UDF(请参阅CREATE FUNCTION )的选项“RETURNS NULL ON NULL INPUT”会停止执行函数体并简单地返回 NULL。

也就是说,它短路了。

有谁知道它如何处理多个参数?

将具有多个参数的函数调用短路会很有用,例如第一个参数是否至少为 NULL。

当我有时间时,我将使用分析器来尝试跟踪 udf 调用。我已经搜索过,但找不到任何东西.. 更有可能我没有使用正确的搜索词。

同时,有没有人有任何想法或经验?

也欢迎来自其他 RDBMS 世界的答案。这是一个 ANSI 设置,我在搜索中看到了 DB2 和 MySQL 的结果

编辑,基于评论:仅适用于非 CLR 函数

干杯小号

编辑:我不需要运行探查器。嗬!这演示了以下行为:

0 投票
5 回答
251228 浏览

vb.net - VB.NET 中有条件三元运算符吗?

在 Perl(和其他语言)中,条件三元运算符可以这样表示:

VB.NET中是否有类似的运算符?

0 投票
10 回答
16204 浏览

c# - 在 if() 中调用方法 - C#

我有几个方法根据它们的成功返回一个布尔值,在 IF() 内部调用这些方法有什么问题吗?

如果 Method1() 返回 FALSE,则 Method2() 不需要触发。

让我知道上面的代码有任何问题。

谢谢你。

编辑:由于代码没有问题,我会接受最有用的答案...添加评论以解决“新手&&&”问题

0 投票
7 回答
36550 浏览

c++ - 是否强制使用短路逻辑运算符?和评价顺序?

ANSI 标准是否要求在 C 或 C++ 中将逻辑运算符短路?

我很困惑,因为我记得 K&R 书中说你的代码不应该依赖于这些被短路的操作,因为它们可能不会。有人可以指出标准中说逻辑操作总是短路的地方吗?我对 C++ 最感兴趣,C 的答案也很好。

我还记得读过(不记得在哪里)没有严格定义评估顺序,因此您的代码不应依赖或假设表达式中的函数将按特定顺序执行:在语句结束时所有引用的函数将被调用,但编译器可以自由选择最有效的顺序。

标准是否指明了这个表达式的评估顺序?

0 投票
6 回答
1130 浏览

c - C中的短路错误处理

我想知道是否有更好的方法来处理 C 中的情况,即一旦在一系列表达式中遇到错误,就想退出函数。(在这种情况下,它是一个在错误时返回 NULL 的函数)

例如,在一些 C 代码中,他们试图通过将一系列语句与 AND (&&) 组合来缩短错误处理。

这让我很恼火,因为我们在一份声明中的一行写了这么多。但我想另一种选择是

但是我在 perl 和 bash 脚本中看到的短路错误评估呢?

这样做的主要问题是 RHS 必须是一个表达式,因此您不能真正从函数中转到或返回。有人会觉得这很有价值还是太有限了?

编辑:我想我应该打算在第一个示例中包含换行符。问题是如果您决定在中间添加另一个表达式,则需要小心。