The Inverted Switch Pattern in Javascript
A normal switch can look like this
switch (color) { case "red": return "apple" case "yellow": return "banana" default: return null}
The inverted switch looks like this
switch (true) { case color === "red": return "apple" case color === "yellow": return "banana"}
This is similar to a series of inline if statements
if (color === "red") return "apple"if (color === "yellow") return "banana"
For if statements to span multiple expressions, they need enclosing braces
if (color === "red") { const apple = getApple() apple.shape = "round" return apple}if (color === "yellow") { const banana = getBanana() banana.shape = "banana-shape?" return banana}
But switch statements can increase in complexity without additional syntax
switch (true) { case color === "red": const apple = getApple() apple.shape = "round" return apple case color === "yellow": const banana = getBanana() banana.shape = "banana-shape?" return banana}
To handle OR conditions, if statements require the ||
operator
if (color === 'red' || color === 'green')
Switches have a fall-through feature where they continue if there is no return or break keyword, so multiple OR cases can share a single execution block. In this example, both red and green will return an apple.
switch (true) { case color === "red": case color === "green": const apple = getApple() return apple case color === "yellow": const banana = getBanana() banana.shape = "banana-shape?" return banana}