预编译过程

ao 1形参声明赋值 2变量声明 3函数声明
go1变量声明 2函数声明

题目分析

  1. a = 1;
  2. function test(e) {
  3. function e() {}
  4. console.log(e); // func
  5. arguments[0] = 2;
  6. console.log(e); // 2
  7. // 此时变量a的值为undefined,不执行if语句内容
  8. if (a) {
  9. var b = 3;
  10. }
  11. var c;
  12. a = 4;
  13. var a;
  14. console.log(b); // undefined
  15. // 暗示全局变量
  16. f = 5;
  17. console.log(c); // undefined
  18. console.log(a); // 4
  19. }
  20. var a;
  21. test(1);
  22. console.log(a); // 1
  23. console.log(f); // 5

undo
go={a:u,test:func}
ao={e:u->func,b:u,c:u,a:u}

do
go={a:u->1,test:func,f:5}
ao={e:u->func->2,b:u,c:u,a:u->4}