Hacker News new | past | comments | ask | show | jobs | submit login
WTF does this code do? (benvan.co.uk)
10 points by benvan on March 24, 2014 | hide | past | favorite | 8 comments



This is why you should always use semicolons in JavaScript. Omitting semicolons here turns this:

  var angry = say('Garrrr!')
  
  // what should I say?
  (amIHappy ? happy : angry)()
into this:

  var angry = say('Garrrr!')(amIHappy ? happy : angry)()


Most web browsers (if you're running this code in a web browser), will do ASI (automatic semicolon insertion).

http://jsfiddle.net/CxUXh/ works fine in Chrome, changing the console.log to an alert.

Not that I'm advocating omitting semicolons!


Interesting - your jsfiddle exhibits broken behaviour (alerting 'garrr') on my browser - chrome 33.0.1750.152. I believe I'm fairly up to date.


You're correct, I thought that was expected behavior, my mistake. TBH though, I'm surprised ASI didn't fix the problem, I'll have to look at the rules for insertion again.


Does it return that because `say` isn't defined inside its own function definition, so it evaluates as false?


It doesn't seem to do anything.


Hahaha, nice!

I'm getting a linter.


this is idiotic




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: