Short Circuit Evaluation
Short-circuiting is where an expression is stopped being evaluated as soon as its outcome is determined.
For example consider the expression "If ( (a = b) or (c = d) ) Then DoSomething"
If "a = b" then we do not need to check if "c = d" because we know the outcome will be True.
Excel Functions
The IF Function does use short circuiting.
Only LongFormula1 gets evaluated
Only LongFormula2 gets evaluated
|
In this example A1 will get evaluated twice.
Although in Excel 2007 this could be replaced with the following, so B1 only gets evaluated once.
|
The AND function does not use short circuiting, both expressions get evaluated
The OR function does not use short circuiting, both expressions get evaluated
|
VBA Language
VBA does not support any short-circuit operators
And and Or will always evaluate all the expressions. In this example VeryLongFunction is called even though the result will be False.
Public Sub NoShortCircuit()
If (False And VeryLongFunction) Then
Call MsgBox("hello")
End If
End Sub
Public Function VeryLongFunction() As Boolean
End Function
You can implement the equivalent by using nested IF statements.
Public Sub NoShortCircuit()
If (False) Then
If (VeryLongFunction) Then
Call MsgBox("hello")
End If
End If
End Sub
JavaScript Language
In JavaScript the following operators are short-circuit operators
When Logical OR sees a falsy value, it continues evaluating. Once it gets to a value it stops.
&& (and)
|| (or)
! (not)
C# Language
In C# the following operators are short-circuit operators
&& (and)
|| (or)
? (conditional operator or ternary operator)
?? (null-coalescing operator)
VB.Net Language
In VB.Net the following operators are short-circuit operators
AndAlso
OrElse
© 2024 Better Solutions Limited. All Rights Reserved. © 2024 Better Solutions Limited TopPrevNext