June 6, 2018
Any construct that alters the sequence of statement execution within the global or functional scope.
if else switch for while
Statements are designed to execute non-linearly. Aside from the obvious bloating effect, statement branching tends to become unintuitive as it progresses.
Conditional logic contained within a statement that has no effect on the statement execution seqeunce.
The following operators facilitate micro-branching:
ternary (<cond> ? a : b) && ||
The logic flows sequentially from top to bottom and even from left to right. There are no forks in the road. There is only one return statement and its at the bottom where we expect it. Best of all it’s short. Nothing is wasted. In fact it’s terse enough to be barely procedural at all.
Alternatives to statement branching fall into two broad categories: micro-branching and no branching at all
Guards (&&) and Defaults(||)
//invoke callback if there is one callback && callback(); //delay by argument or 20 delayBy(delay || 20); //remove node from its parent node && node.parent && node.parent.removeChild(node); //log a test in the console id we have one window.console && console.log('test');
Some things just have a natural place. Birds in the sky, fish in the sea and a return statement at the end of a function.