Skip to content

Instantly share code, notes, and snippets.

@jugglinmike
Created January 23, 2016 00:57
Show Gist options
  • Save jugglinmike/0fb2307218f16c14b128 to your computer and use it in GitHub Desktop.
Save jugglinmike/0fb2307218f16c14b128 to your computer and use it in GitHub Desktop.
Statement Tail Calls
(function f(n) { if (n === 0) { return 0; } return f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } return 1 + f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } return f(n - 1) % 2; }(1000));
(function f(n) { if (n === 0) { return 0; } return new f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } return f(n - 1) || true; }(1000));
(function f(n) { if (n === 0) { return 0; } return false || f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } return f(n - 1) && true; }(1000));
(function f(n) { if (n === 0) { return 0; } return true && f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } { void 0; return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } var x = f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } var x, y = f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } var [x] = [f(n - 1)]; }(1000));
(function f(n) { if (n === 0) { return 0; } let x = f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } let x, y = f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } let [x] = [f(n - 1)]; }(1000));
(function f(n) { if (n === 0) { return 0; } const x = f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } const x, y = f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } const [x] = [f(n - 1)]; }(1000));
(function f(n) { if (n === 0) { return 0; } f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } if (true) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } if (f(n - 1)) {} }(1000));
(function f(n) { if (n === 0) { return 0; } if (false) { } else { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } if (f(n - 1)) { } else { } }(1000));
(function f(n) { if (n === 0) { return 0; } switch(f(n - 1)) {} }(1000));
(function f(n) { if (n === 0) { return 0; } switch(0) { case f(n - 1): } }(1000));
(function f(n) { if (n === 0) { return 0; } switch(0) { case 0: return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } switch(f(n - 1)) { default: } }(1000));
(function f(n) { if (n === 0) { return 0; } switch(0) { default: f(n - 1) } }(1000));
(function f(n) { if (n === 0) { return 0; } switch(0) { case 0: return f(n - 1); default: } }(1000));
(function f(n) { if (n === 0) { return 0; } var y; for (y in [0]) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } var y; for (y in f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (var y in [0]) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } for (var y in f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (let y in [0]) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } for (let y in f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (const y in [0]) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } for (const y in f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } var y; for (y of [0]) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } var y; for (y of f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (var y of [0]) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } for (var y of f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (let y of [0]) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } for (let y of f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (const y of [0]) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } for (const y of f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } var x; for (x = 0; x < 1; ++x) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } for (f(n - 1); ;) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (; f(n - 1);) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (; ; f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (var x = 0; ;) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } for (var x = f(n - 1); ;) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (var x = 0; f(n - 1);) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (var x = 0; ; f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (let x = 0; ;) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } for (let x = f(n - 1); ;) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (let x = 0; f(n - 1);) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (let x = 0; ; f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (const x = 0; ;) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } for (const x = f(n - 1); ;) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (const x = 0; f(n - 1);) { } }(1000));
(function f(n) { if (n === 0) { return 0; } for (const x = 0; ; f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } do { return f(n - 1); } while (false) }(1000));
(function f(n) { if (n === 0) { return 0; } do { } while (f(n - 1)) }(1000));
(function f(n) { if (n === 0) { return 0; } while (f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } while (true) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } return f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } with ({}) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } with (f(n - 1)) { } }(1000));
(function f(n) { if (n === 0) { return 0; } test262: return f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } throw f(n - 1); }(1000));
(function f(n) { if (n === 0) { return 0; } try { return f(n - 1); } catch (err) { } }(1000));
(function f(n) { if (n === 0) { return 0; } try { throw null; } catch (err) { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } try { } catch (err) { } finally { return f(n - 1); } }(1000));
(function f(n) { if (n === 0) { return 0; } try { } finally { return f(n - 1); } }(1000));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment