Implicit coercion of Symbols

Rick Waldron waldron.rick at
Fri Jan 2 17:08:27 PST 2015

On Fri Jan 02 2015 at 7:53:22 PM Brendan Eich <brendan at> wrote:

> Caitlin Potter wrote:
> > One reason it might make sense to throw, is people converting values
> > to string names for use as object properties. Reason you'd want to
> > throw would be to prevent accidentally making the key useless
> > (different from its original Symbol value).
> This is exactly the reason.

Yep, I just wanted to make sure the subject got some last minute airtime to
make sure this is _really_ the way to go. I'll play the opposition here: is
the hazard as compelling now as it was when it was first discussed? Now
that implementors have had some time to work with Symbol, do proponents of
"throw" still feel strongly?

> Of course, having String(x) and '' + x diverge is funky, but not novel:

Sure, but the argument was re: the implicit coercion of built-ins.


> js> o = {valueOf(){return 42}, toString(){return 'haha'}}
> ({valueOf:function valueOf(){return 42}, toString:function
> toString(){return 'haha'}})
> js> String(o)
> "haha"
> js> ''+o
> "42"
> /be
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list