Skip to content

Instantly share code, notes, and snippets.

@wycats
Last active August 29, 2015 14:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save wycats/1b829d55d1fdb97d8762 to your computer and use it in GitHub Desktop.
Save wycats/1b829d55d1fdb97d8762 to your computer and use it in GitHub Desktop.

Before

  1. Let O be the result of calling ToObject passing the this value as the argument.
  2. ReturnIfAbrupt(O).
  3. Let len be ToLength(Get(O, "length")).
  4. ReturnIfAbrupt(len).
  5. If len is 0, return false.
  6. Let n be ToInteger(fromIndex). (If fromIndex is undefined, this step produces the value 0.)
  7. ReturnIfAbrupt(n).
  8. If n ≥ 0, then
  9. Let k be n.
  10. Else n < 0,
  11. Let k be len + n.
  12. If k < 0, then let k be 0.
  13. Repeat, while k < len
  14. Let elementK be the result of Get(O, ToString(k)).
  15. ReturnIfAbrupt(elementK).
  16. If SameValueZero(searchElement, elementK) is true, return true.
  17. Increase k by 1.
  18. Return *false

Proposed?

  1. let O = @Try(ToObject(this))
  2. let len = @Try(ToLength(Get(O, "length")))
  3. if len is 0, return false
  4. let n = @Try(ToInteger(fromIndex)) (If fromIndex is undefined, this step produces the value 0.)
  5. if n ≥ 0, then
  6. let k be n
  7. else n < 0,
  8. let k = len + n
  9. if k < 0, then let k = 0
  10. while k < len
  11. let elementK = @Try(Get(O, ToString(k)))
  12. if SameValueZero(searchElement, elementK) is true, return true.
  13. increment k
  14. Return false

With ? Postfix

  1. let O = ToObject(this)?
  2. let len = ToLength(Get(O, "length"))?
  3. if len is 0, return false.
  4. let n = ToInteger(fromIndex)? (If fromIndex is undefined, this step produces the value 0.)
  5. if n ≥ 0, then
  6. let k be n
  7. else n < 0,
  8. let k = len + n
  9. if k < 0, then let k = 0
  10. while k < len
  11. let elementK = Get(O, ToString(k))?
  12. if SameValueZero(searchElement, elementK) is true, return true.
  13. increment k
  14. Return false
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment