This feature has been removed from the Web standards. Though some browsers may still support it, it is in the process of being dropped. Do not use it in old or new projects. Pages or Web apps using it may break at any time.

Non-standard. The StopIteration object is a SpiderMonkey-specific feature. For future-facing usages, consider using for..of loops and the iterator protocol.

The StopIteration object is used to tell the end of the iteration in the legacy iterator protocol.




StopIteration is a part of legacy iterator protocol, and it will be removed at the same time as legacy iterator and legacy generator.


StopIteration is thrown by Iterator.

var a = {
  x: 10,
  y: 20,
var iter = Iterator(a);
console.log(; // ["x", 10]
console.log(; // ["y", 20]
console.log(; // throws StopIteration

Throwing StopIteration.

function f() {
  yield 1;
  yield 2;
  throw StopIteration;
  yield 3; // this is not executed.

for (var n in f()) {
  console.log(n);   // 1
                    // 2


Non-standard. Not part of any current standards document.

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support No support (Yes) No support No support No support
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support No support No support (Yes) No support No support No support

See also


© 2016 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

Deprecated JavaScript Legacy Iterator Reference StopIteration