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