This page verifies that eval has two meanings:

An operator: executes a script in local scope with the local scope's variable object and "this" object.
A global function: executes a script in global scope with the global scope's variable object and "this" object.
Meaning #2 should remain constant even if the global eval function is copied into a global variable ("globalEval") or a local variable ("localEval").
If the test passes, you'll see a series of pass messages below.


----- Scope Chain for Getters: -----

PASS: eval("x") should be 1 and is.
PASS: window.eval("x") should be 0 and is.
PASS: globalEval("x") should be 0 and is.
PASS: localEval("x") should be 0 and is.
PASS: (function() { var eval = window.eval; return eval("x"); })() should be 0 and is.

----- Variable Object: -----

PASS: eval("var y; "y" in window") should be false and is.
PASS: window.eval("var y; "y" in window") should be true and is.
PASS: globalEval("var y; "y" in window") should be true and is.
PASS: localEval("var y; "y" in window") should be true and is.
PASS: (function() { var eval = window.eval; return eval("var y; "y" in window"); })() should be true and is.

----- Scope Chain for Setters: -----

PASS: eval("z = 1; window.z") should be 0 and is.
PASS: window.eval("z = 2; window.z") should be 2 and is.
PASS: globalEval("z = 3; window.z") should be 3 and is.
PASS: localEval("z = 4; window.z") should be 4 and is.
PASS: (function() { var eval = window.eval; return eval("z = 5; window.z"); })() should be 5 and is.

----- This Object: -----

PASS: eval("this") should be ["this" object passed to .call()] and is.
PASS: window.eval("this") should be [object DOMWindow] and is.
PASS: globalEval("this") should be [object DOMWindow] and is.
PASS: localEval("this") should be [object DOMWindow] and is.
PASS: (function() { var eval = window.eval; return eval("this"); })() should be [object DOMWindow] and is.

