I discovered this week a little footgun if you happen to use this bit of syntactic sugar:
const object = {
foo: 'bar',
}
switch (true) {
case object && object.foo: {
// This will never execute
}
default:
// ...
}
The cases in your switch(true)
must actually return true
, not truthy, for the case to execute.
Using switch(true)
is a bit of a controversial coding practice, since it's only meant to replace long if..else if..else
chains. Literally has no additional utility except aesthetics... but I like it nevertheless
@julian so adding a `&& true` at the end of your condition, should work, right?
```
case object && object.foo && true: {
```
@nextgraph@fosstodon.org in my case, I just casted it as bool: !!object.foo
. You could also object.hasOwnProperty('foo')
, although that would be true if object.foo = null
too