Arrays are a good point, this is where I’d think accidental coercions are most 
likely. The other use case is object-as-dictionary, which will slowly be 
replaced by `Object.create(null)` (no need to escape in ES6+) and `Map`.

I don’t feel strongly either way, I just feel that the added spec complexity is 
not ideal. Especially ToBoolean() not throwing an exception, while ToString() 
and ToNumber() do.

> On 03 Jan 2015, at 04:02, Boris Zbarsky <bzbar...@mit.edu> wrote:
> 
> On 1/2/15 9:40 PM, Axel Rauschmayer wrote:
>> Can you give an example?
> 
>       get: function( num ) {
>               return num != null ?
> 
>                       // Return just the one element from the set
>                       ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
> 
>                       // Return all the elements in a clean array
>                       slice.call( this );
>       },
> 
> That's from jQuery 2.1.3.
> 
> And from the same place:
> 
>       function cache( key, value ) {
>               // Use (key + " ") to avoid collision with native prototype 
> properties (see Issue #157)
>               if ( keys.push( key + " " ) > Expr.cacheLength ) {
>                       // Only keep the most recent entries
>                       delete cache[ keys.shift() ];
>               }
>               return (cache[ key + " " ] = value);
>       }
> 
> That's after looking through about 1/10 of the library.  I'll bet there are 
> more.  I'll also bet this sort of thing appears in every single major library 
> out there.
> 
> -Boris

-- 
Dr. Axel Rauschmayer
a...@rauschma.de
rauschma.de



_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to