• Victor
    link
    fedilink
    209 days ago

    So there’s yet another level of quirkery to this bullshit then, it seems. 😆 Nice digging! 🤝

    I also noticed that if you surround the curlies with parentheses, you get the same again:

    > eval('{} + []')
    0
    > eval('({}) + []')
    '[object Object]'
    
    • @[email protected]
      link
      fedilink
      109 days ago

      Yep, parentheses force {} to be interpreted as an expression rather than a block — same reason why IIFEs have !function instead of just function.

      • Victor
        link
        fedilink
        1
        edit-2
        9 days ago

        I thought IIFE’s usually looked like (function (...params) {})(...args). That’s not the latest way? To be honest I never used them much, at least not after arrow functions arrived.