<br><br><div class="gmail_quote">On Sat Jan 03 2015 at 6:30:43 PM Andrea Giammarchi <<a href="mailto:andrea.giammarchi@gmail.com">andrea.giammarchi@gmail.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Agreed with Brendan,<div>¬† and I've ¬†thought the same.</div><div><br></div><div>It's been also years we have problems using unknonw objects in the wild, i.e.<div><br></div><div>```js</div><div><div>var n = {__proto__:null};</div><div>var s = String(n); // error, No default value</div><div>var s = '' + n; // error, No default value</div></div><div>```</div><div>Same if used as [property accessor] so I am not sure why `String(o)` when `o` is `Symbol` should not throw.</div><div><br></div><div>I'd expect it to throw all the time and let developers be a bit more careful on their explicit or implicit casts.</div><div><br></div><div>The `toString` and `valueOf` are great examples that could compromise a lot of real-world code.</div><div><br></div><div>Being `Symbols` new we should probably/hopefully get them in the right way.</div><div><br></div><div>I feel like throwing either cases is the right way.</div></div></div></blockquote><div><br></div><div>That example above is pretty compelling for throw always consistency.</div><div><br></div><div>Rick</div></div>