<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div>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).</div><div><br></div><div>Haven't paid attention to the rationale, but that doesn't seem like a bad one.</div><div><br>On Jan 2, 2015, at 6:26 PM, Rick Waldron <<a href="mailto:waldron.rick@gmail.com">waldron.rick@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div>Kyle Simpson brought this up on Twitter today and I think it deserves one last look. Here's an example of the issue: <div><br></div><div><div>  var sym = Symbol("description");</div><div>  sym + ""; // Throws</div><div><br></div><div>Meanwhile...</div><div><br></div><div>  var sym = Symbol("description");</div><div>  String(sym); // "Symbol(description)" *</div><div><br></div><div><br></div><div>(* appears to be the convention that implementors have converged on)</div><div><br></div><div>This is the only time that a "thing" in JavaScript throws when it encounters an implicit coercion operation. This detail appears to be problematic in that it's an unnecessary divergence from the language's normal behaviour. </div><div><br></div><div>Ref: <a href="https://people.mozilla.org/~jorendorff/es6-draft.html#sec-addition-operator-plus-runtime-semantics-evaluation">https://people.mozilla.org/~jorendorff/es6-draft.html#sec-addition-operator-plus-runtime-semantics-evaluation</a> 11.a </div><div><br></div></div><div><br></div><div>Rick</div>
</div></blockquote><blockquote type="cite"><div><span>_______________________________________________</span><br><span>es-discuss mailing list</span><br><span><a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a></span><br><span><a href="https://mail.mozilla.org/listinfo/es-discuss">https://mail.mozilla.org/listinfo/es-discuss</a></span><br></div></blockquote></body></html>