I'm writing a function for when a button is clicked. There are plenty of different buttons, so I'd like to use a switch(true)
statement as opposed to a long series of if...else if
statements.
Several of the buttons are for numbers and I've put the number in the value
attribute of the <button>
tag. However, testing these two functions gives different results.
switch(true) {
case (Number(button.value)):
console.log('thats a number');
break;
default:
console.log('NaN');
break;
}
if(Number(button.value)) {
console.log('thats a number');
} else {
console.log('NaN');
}
Can someone please explain why? I've tested thoroughly without getting anywhere and feel like it must be some technical difference in the way switch
and if
statements are processed.
The switch
statement checks the given condition with strict equality ===
, whereas if
takes a value which is converted to boolean for a check.
What you get in switch
is
true === Number(button.value)
and that check is never true
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With