预编译

279 阅读1分钟

注意: 本文章总结的知识点参考渡一教育前端课程

以下两句话比较重要:

  • 函数声明整体提升
  • 变量 声明提升
//暗示全局变量,未经声明就赋值了,属于window属性
a = 10;  
console.log(a)
//一切声明的全局变量,全是window的属性
var a = 10;
console.log(window.a) //10

预编译:发生在函数执行的前一刻

预编译的步骤如下:

image.png

其中AO指的是执行期上下文

例子如下:

<script type="text/javascript">
    function test(a,b) {
      console.log(a);
      console.log(b);
      var b = 234;
      console.log(b);
      a = 123;
      console.log(a);
      function a() {}
      var a;
      b = 234;
      var b = function() {}
      console.log(a);
      console.log(b);
    }
    test(1)
    //结果是:
    // function a() {}
    // undefined
    // 234
    // 123
    // 123
    // function() {}
 </script>

image.png

image.png