tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

defaults-scoping.js (764B)


      1 load(libdir + "asserts.js");
      2 
      3 var x = 'global';
      4 function f(a=x) {  // global variable x
      5    var x = 'local';
      6    return a;
      7 }
      8 assertEq(f(), 'global');
      9 
     10 var i = 42;
     11 function g(f=function () { return ++i; }) {  // closes on global variable i
     12    var i = 0;
     13    return f;
     14 }
     15 var gf = g();
     16 assertEq(gf(), 43);
     17 assertEq(gf(), 44);
     18 gf = g();
     19 assertEq(gf(), 45);
     20 
     21 function h(f=function (s) { return eval(s); }) {  // closes on global scope
     22    var x = 'hlocal';
     23    return f;
     24 }
     25 var hf = h();
     26 assertEq(hf('x'), 'global');
     27 assertEq(hf('f'), hf);
     28 assertEq(hf('var x = 3; x'), 3);
     29 
     30 function j(expr, v=eval(expr)) {
     31  return v;
     32 }
     33 assertEq(j("expr"), "expr");
     34 assertThrowsInstanceOf(() => j("v"), ReferenceError);
     35 assertEq(j("Array"), Array);
     36 assertEq(j("arguments").length, 1);