第一章-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指代调用堆栈的上一级 => 对象、数组等引用关系逻辑