function f1(a, aIs,        // without default parameter
            b=()=>62, bIs, // with default parameter
            // before function body
            c=(assertEq(a(), aIs), assertEq(b(), bIs),
               ()=>63),
            cIs) {
  // before function declarations
  assertEq(a(), 52);
  assertEq(b(), 53);
  assertEq(c(), 55);

  function a() {
    return 52;
  }
  function c() {
    return 54;
  }
  function g() {
    // close here
    assertEq(a(), 52); // after function declaration
    assertEq(b(), 53); // before function declaration
    assertEq(c(), 55); // before last function declaration
  }
  // function declaration after closed
  function b() {
    return 53;
  }

  assertEq(a(), 52); // after function declaration
  assertEq(b(), 53); // after function declaration
  assertEq(c(), 55); // before last function declaration

  g();
  c = ()=>72;
  assertEq(c(), 72); // after assignment in body
  h();
  assertEq(c(), 82); // after assignment in closed function

  function h() {
    assertEq(c(), 72); // after assignment in body
    c = ()=>82;
    assertEq(c(), 82); // after assignment in closed function
  }
  // function re-declaration after closed and assignment
  function c() {
    return 55;
  }
}
f1(()=>42, 42, undefined, 62, undefined, 63);
f1(()=>42, 42, undefined, 62, ()=>44, 44);
f1(()=>42, 42, ()=>43, 43, undefined, 63);
f1(()=>42, 42, ()=>43, 43, ()=>44, 44);

function f2(a, aIs,
            // call before body
            b=(function() { assertEq(a(), aIs); })(),
            // call inside body
            c=function() { assertEq(a(), 52); }) {
  function a() {
    return 52;
  }
  function g() {
    // close here
    assertEq(a(), 52);
  }

  assertEq(a(), 52);
  g();
  c();
}
f2(()=>42, 42);

function f3(a, aIs,
            // call before body
            // close here
            b=(function() { assertEq(a(), aIs); })(),
            // call inside body
            c=function() { assertEq(a(), 52); }) {
  function a() {
    return 52;
  }

  assertEq(a(), 52);
  c();
}
f3(()=>42, 42);

function f4(a,
            // assignment before body
            b=a=()=>62,
            c=(assertEq(a(), 62)),
            // function declaration before body
            d=eval("function a() { return 72; }"),
            e=(assertEq(a(), 72))) {
  function a() {
    return 52;
  }
  function g() {
    // close here
    assertEq(a(), 52);
  }

  assertEq(a(), 52);
  g();
}
f4(()=>42);

function f5(a, b, c, d) {
  // before var/function declarations
  assertEq(a(), 52);
  assertEq(b(), 53);
  assertEq(c(), 54);
  assertEq(d(), 55);

  function g() {
    // before var/function declarations, called after var declarations
    // close here
    assertEq(a(), 52);
    assertEq(b(), 63);
    assertEq(c(), 54);
    assertEq(d(), 65);
  }

  var a, b = ()=>63;
  var c, d = ()=>65;

  // after var declarations, before function declarations
  assertEq(a(), 52);
  assertEq(b(), 63);
  assertEq(c(), 54);
  assertEq(d(), 65);

  function h() {
    // after var declarations, before function declarations
    assertEq(a(), 52);
    assertEq(b(), 63);
    assertEq(c(), 54);
    assertEq(d(), 65);
  }
  function a() {
    return 52;
  }
  function b() {
    return 53;
  }
  function c() {
    return 54;
  }
  function d() {
    return 55;
  }
  function i() {
    // after var/function declarations
    assertEq(a(), 52);
    assertEq(b(), 63);
    assertEq(c(), 54);
    assertEq(d(), 65);
  }

  // after var/function declarations
  assertEq(a(), 52);
  assertEq(b(), 63);
  assertEq(c(), 54);
  assertEq(d(), 65);
  g();
  h();
  i();
}
f5(()=>42, ()=>43, ()=>44, ()=>45);
