On Mon, Aug 25, 2014 at 12:40 PM, Charles Pick <char...@codemix.com> wrote:

> Hello, forgive me if this has come up before, I couldn't find any
> discussions via Google.
>
> One regular, annoying mistake I see people making is combining the `!`
> operator with `instanceof`:
>
>     if (!foo instanceof Foo) { ... }
>
>
> of course, this must be written with extra parentheses:
>
>     if (!(foo instanceof Foo)) { ... }
>
>
> My question is, why? There are no circumstances where the developer
> *intended* to write the first version, it's a typo and will always evaluate
> to false, even when using Boolean. Therefore would it be possible to fix
> the precedence so that the first version is parsed the same way as the
> second?
>

While I agree that the associativity should be different, changing this
won't work: there are probably tens of thousands of websites and node.js
scripts and what have you out there that would break, because the rely on
the current behavior. (Many of them probably because someone "fixed" the
associativity issue by inverting the contents of then and else blocks
instead of the condition.) Yes, those sites use somewhat broken code, but
users don't care as long as they work.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to