(function () { "use strict"; function verify() { for (var i = 0; i < counter; ++i) { if (results[i] != i) throw "strict mode verify() failed for item " + i + "." } } let results = [ ]; let counter = 0; let x = counter++; results.push(eval("x")); { let x = counter++; results.push(eval("x")); } try { throw counter++; } catch (x) { results.push(eval("x")); } (() => { var x = counter++; results.push(eval("x")); })(); (function (x) { results.push(eval("x")); })(counter++); verify(); })(); (function () { function verify() { for (var i = 0; i < counter; ++i) { if (results[i] != i) throw "non-strict mode verify() failed for item " + i + "." } } let results = [ ]; let counter = 0; let x = counter++; results.push(eval("x")); { let x = counter++; results.push(eval("x")); } try { throw counter++; } catch (x) { results.push(eval("x")); } (() => { var x = counter++; results.push(eval("x")); })(); (function (x) { results.push(eval("x")); })(counter++); with ({ x : counter++ }) { results.push(eval("x")); } verify(); })();