Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Actually, it is. It is very easy to confuse an object literal and a block in Javascript. In fact, in the book I am writing[0], I dedicate an entire chapter to using this ambiguity to write arsehole code. Here's another example[1]

[0] https://leanpub.com/underhandedjavascript or its alternate title: https://leanpub.com/jsinterviewquestions [1] Slide 21 (1-index): https://speakerdeck.com/chewxy/underhanded-javascript-how-to...

EDIT:

For those of you who do not want to click through my self promotional links, try this in your browser:

  {}[0] == true // false
  
  {}[1] == true // true
  
  !{}[0] == true // true
  
  !{}[1] == true // true


Do you have any non-contrived examples of confusing an object literal and a block?

Because as soon as you see this

    { identifier:
You know it's an object literal and not a block.




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

Search: