• Victor@lemmy.world
    link
    fedilink
    arrow-up
    19
    ·
    5 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]'
    
    • PoolloverNathan@programming.dev
      link
      fedilink
      arrow-up
      9
      ·
      5 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@lemmy.world
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        4 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.