Array.prototype.indexOf use of SameValue()

Mark S. Miller erights at google.com
Tue Apr 28 11:49:33 PDT 2009


On Tue, Apr 28, 2009 at 11:34 AM, John-David Dalton
<john.david.dalton at gmail.com> wrote:
> In the ECMA 5 RC spec I noticed that 15.4.4.14 Array.prototype.indexOf
> (and lastIndexOf) make use of the SameValue operation.
> The spec states that (9.12)  SameValue will return true If Type(x) is
> Undefined or Null.

The steps which say these (steps 2 & 3) occur after step 1:

1. If Type(x) is different from Type(y), return false.
2. If Type(x) is Undefined, return true.
3. If Type(x) is Null, return true.

so steps 2 & 3 only apply if Type(x) is the same as Type(y).

> Would this not cause an issue with 9c of the Array.prototype.indexOf spec.
> "c. If SameValue(searchElement,elementK) is true,  return k.".
>
> [1,2,null].indexOf(null) -> SameValue(null, 1) -> true, return 0.

No, because Type(null) is Null and Type(1) is Number; so step 1 will
return false.


> var undef;
> [1,2,undef].indexOf(undef) -> SameValue(undefined, 1) -> true, return 0.
>
> - JDD
> _______________________________________________
> es-discuss mailing list
> es-discuss at mozilla.org
> https://mail.mozilla.org/listinfo/es-discuss
>



-- 
    Cheers,
    --MarkM


More information about the es-discuss mailing list