作用域链demon练习

发布时间 2023-12-16 17:36:10作者: 流弊的小涛

demon1

 function test(){
    console.log(b); //undefined
    if(a){
      var b = 100;
    }
    console.log(b) ////undefined
    c = 234;
    console.log(c) //234
  }

  var a;
  test();
  a = 10;
  console.log(c) //234

  // 分析
  // VO = {
  //   a: undefined, //10
  //   test: fun,
  //   c: 234
  // }

  // AO = {
  //   b: undefined
  // }

demon2

  var a = 1;
    function b() {
      console.log(a); //fun(a)
      a = 10;
      return;
      function a() { }
    }
    b()
    console.log(a) // 1

    VO = {
      a: undefined, // 1
      b: function () { }
    }

    AO = {
      a: function(){}, //10
    }

demon3

 console.log(foo); //function("C")
    var foo = "A";
    console.log(foo); //A
    var foo = function(){
      console.log('B'); //B
    }
    console.log(foo); //function("B")
    foo(); //B
    function foo(){
      console.log("C")
    }
    console.log(foo);  //function("B")
    foo(); //B

    VO = {
      foo: undefined, //function("C") // A  //function("B")
    }

demon4

var foo = 1;
    function bar(a){
      var a1 = a;
      var a = foo;
      function a(){
        console.log(a)
      }
      a1()
    }
    bar(3)

    VO = {
      foo: undefined, //1
      bar: function(){}
    }

    AO = {
      arguments: {
        a: 3,
        length: 1
      },
      a1: undefined, //function(){}
      a: undefined, //3 //function(){} //1
    }