**What are the values in JavaScript that are 'falsey'**, meaning that they evaluate as false in expressions like `if(value)`, `value ?` and `!value`?

---

There are [some discussions of the purpose of falsey values on Stack Overflow already](https://stackoverflow.com/questions/3982663/falsey-values-in-javascript), but no exhaustive complete answer listing what all the falsey values are.

[I couldn't find any complete list on MDN JavaScript Reference](https://www.google.co.uk/search?hl=en&as_q=falsy%20OR%20falsey&as_sitesearch=developer.mozilla.org/en-US/docs/Web/JavaScript), and I was surprised to find that the top results when looking for a complete, authoritative list of falsey values in JavaScript were blog articles, some of which had obvious omissions (for example, `NaN`), and none of which had a format like Stack Overflow's where comments or alternative answers could be added to point out quirks, surprises, omissions, mistakes or caveats. So, it seemed to make sense to make one.