So, a junior programmer on my team today wrote the following piece of code:
if(status === (\"incomplete\" || \"unknown\"))
Which is obvious
In JavaScript, the || operator returns its first operand if it evaluates to true (i.e. it is not false, null, undefined, "", or 0), and its second operand otherwise.
In the first case, ("incomplete" || "unknown") always evaluates to "incomplete", since it evaluates to true.
The entire condition then becomes:
if (status === "incomplete")
Which explains the behaviour you are observing.
("incomplete" || "unknown") will return "incomplete" which is than compared to status.
But what I can't explain is why exactly
status === ("incomplete" || "unknown")wouldn't work
That's because the expression in the parenthesis is evaluated first. The non-empty string incomplete is truthy, so the OR-expression ("incomplete" || "unknown") yields "incomplete" and only that is then compared with your status variable.
To shorten the condition, there are many ways including arrays of values, regular expression test etc.