this指针/闭包/作用域

68 阅读1分钟

第一章-this指针/闭包/作用域

作用域-预解析&提升

函数&变量提升

函数提升只会在当前的作用域内进行提升,并不会超出当前的作用域

function A() {
  console.log("A");
  C();
  function B() {
    console.log("B");
    function C() {
      console.log("C");
    }
  }
}
A();

变量声明(var)可以被提升,但是赋值不会

程序最开始的时候,只对window下的变量和函数进行预解析,只有函数执行的时候才会对函数中的变量函数进行预解析。

当函数和变量重名时,var变量先提升(只声明,目前值为undefined),然后对函数进行提升(不执行),然后如果变量赋值了就覆盖函数

this

this是在执行时动态读取上下文决定的,而不是创建时

隐式绑定 - this指代调用堆栈的上一级 => 对象、数组等引用关系逻辑

image-20230804223541647.png

image-20230804235136617.png