Event driven expression bindings

My understanding, based on the user manual, is that expression bindings execute in an event driven way provided there are no polling functions (runScript(), now(), etc.)

My question is in regard to the logic functions. When a value that isn’t relevant to the final answer, does it cause the binding to refresh on every change anyway? In the example below, does the binding refresh every second as flasherTag changes even though the output answer won’t change?

if(
    1, // If statement is always True
    1, // This value should always return
    {flasherTag} //on one second, off one second
)

A different example.

case(1,
1, 1,
2, {flasherTag},
3, {someOtherThrowAwayTag},
{fallBackTag}
)

Yes. There’s no ‘short-circuit’ evaluation in expressions - the {flasherTag} in your first example will always be evaluated, and is monitored for changes, which triggers the expression’s evaluation.