10

I usually set object properties like so,

// Boolean
this.listening = config.listening || true;

But config.listening is either true or false, and in this case this.listening will always be true because if config.listening is false it will equal true.

Is there a better way to set these boolean properties without having to do an if statement?

Is there a if isset function in javascript to check it exists rather than what it equals to?

user2251919
  • 665
  • 2
  • 11
  • 23

2 Answers2

17

You could use the ternary (conditional) operator like this:

this.listening = config.listening === false ? false : true;

If config.listening is false, this.listening is set to false. If it's any other value, it's set to true.

If you want to check if it's defined, you could use:

this.listening = typeof config.listening !== "undefined"

References:

Ian
  • 50,146
  • 13
  • 101
  • 111
3

You need to check to make sure it is not undefined, not that it is a "falsey" value.

this.listening = config.listening!==undefined ? config.listening : true;
sebnukem
  • 8,143
  • 6
  • 38
  • 48
epascarello
  • 204,599
  • 20
  • 195
  • 236