// Any copyright is dedicated to the Public Domain. // http://creativecommons.org/licenses/publicdomain/ var a = 9; function directArg(eval, s) { var a = 1; return eval(s); } function directVar(f, s) { var eval = f; var a = 1; return eval(s); } function directWith(obj, s) { var f; with (obj) { f = function () { var a = 1; return eval(s); }; } return f(); } // direct eval, even though 'eval' is an argument assertEq(directArg(eval, 'a+1'), 2); // direct eval, even though 'eval' is a var assertEq(directVar(eval, 'a+1'), 2); // direct eval, even though 'eval' is found via a with block assertEq(directWith(this, 'a+1'), 2); assertEq(directWith({eval: eval, a: -1000}, 'a+1'), 2); reportCompare(0, 0);