Your statement
const result = number == 4 ? 'true 1' : 'false 1' || number == 3 ? 'true 2' : 'false 2' || number == 5 ? 'true 3' : 'false 3'
is interpreted as if it were written
const result = (number == 4) ? 'true 1' : ('false 1' || number == 3) ? 'true 2' : ('false 2 || number == 5) ? 'true 3' : 'false 3';
In particular, this part ('false 1' || number ==3)
is true
because 'false 1'
is a non-empty string.
I am not sure what you were attempting, but note that ? :
ultimately can have just one value: either the value of the first expression, or the value of the second. Thus those 'false n'
strings really don't make any sense: either one of those conditional tests of number
will be true, or none will be.