function testFuncStmt1() { var g = 3; function f(b) { if (b) { function g() { return 42 } assertEq(g(), 42); } } f(true); } testFuncStmt1(); function testFuncStmt2() { var g = 3; (function(b) { if (b) { function g() { return 42 } function f() { assertEq(g(), 42); } f(); } })(true); } testFuncStmt2(); function testEval1() { var g = 3; function f() { eval("var g = 42"); assertEq(g, 42); } f(); } testEval1(); function testEval2() { var g = 3; (function() { eval("var g = 42"); function f() { assertEq(g, 42); } f(); })(); } testEval2(); function testWith1() { var g = 3; function f() { with ({g:42}) { assertEq(g, 42); } } f(); } testWith1(); function testWith2() { var g = 3; with ({g:42}) { function f() { assertEq(g, 42); } } f(); } testWith2();