// Control can exit a for-of loop via throw. function f() { for (var a of [1, 2, 3]) { for (var b of [1, 2, 3]) { for (var c of [1, 2, 3]) { if (a !== b && b !== c && c !== a) throw [a, b, c]; } } } } var x = null; try { f(); } catch (exc) { x = exc.join(""); } assertEq(x, "123");