blob: d53540df8ae159243ffbb7fda827d53aa4f4bdb8 [file] [log] [blame]
var x = 'global';
function f(a=x) { // local variable x
var x = 'local';
return a;
}
assertEq(f(), undefined);
function g(f=function () { return ++x; }) { // closes on local variable x
var x = 0;
return f;
}
var gf = g();
assertEq(gf(), 1);
assertEq(gf(), 2);
gf = g();
assertEq(gf(), 1);
function h(f=function (s) { return eval(s); }) { // closes on local scope
var x = 'hlocal';
return f;
}
var hf = h();
assertEq(hf('x'), 'hlocal');
assertEq(hf('f'), hf);
assertEq(hf('var x = 3; x'), 3);
function j(expr, v=eval(expr)) {
return v;
}
assertEq(j("expr"), "expr");
assertEq(j("v"), undefined);
assertEq(j("Array"), Array);
assertEq(j("arguments").length, 1);