Brendan Eich (2015-01-03T00:53:18.000Z)
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.

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

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
d at domenic.me (2015-01-12T17:52:04.607Z)
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.

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

```
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"
```