Hacker News new | past | comments | ask | show | jobs | submit login

Good luck understanding things like `if(!!!c) { ... }` or why a line-break after a return statement matters in JavaScript/TypeScipt ;) JS has its own footguns and legacy baggage.



I've never seen `!!!` in JavaScript, and I do a lot of it. Care to share?


Shouldn't have made an example in the if-statement as it is mostly useless there. But triple ! is very common to negate-and-convert a possibly falsy statement (undefined, null, false/true):

const x: boolean | undefined | null = getValue(); const not_x: boolean = !!!y

I added TS type annotation for clarity, although could be inferred if `getValue` is typed accordingly.


I've seen `!!` and I've seen `!`, but what would `!!!` get you here that the other two don't?


negation plus cast to boolean. See this for more info: https://stackoverflow.com/questions/21154510/the-use-of-the-...


And line breaks after return statement? Is that true? Haven't stumbled on that one. So this is probably misinformation.


No, that one is true. JS automatic semicolon insertion is dumb.

   return
     <p>
       A JSX paragraph
     </p>
is a common mistake from novices; it'll return void/undefined.

In TypeScript, at least, you get yelled at for this.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: