此处截取《你不知道的JavaScript》中对this的描述片段,通过对调用栈和调用位置的描述找到this指向
this是在运行时进行绑定的而不是编写时绑定。this的绑定和函数声明的位置没有任何关系,只取决于函数的调用方式。
function baz(){
console.log("baz");//当前调用栈是baz-全局作用域,因此当前调用位置是全局作用域
bar();//《--bar的调用位置
}
function bar(){
console.log("bar");//当前调用栈是bar-baz-全局作用域,因此当前调用位置是baz
foo();//《--foo的调用位置
}
function foo(){
console.log("foo");//当前调用栈是foo-bar-baz-全局作用域,因此当前调用位置是bar
}
baz();//《--baz的调用位置是全局作用域
可以看到当前调用位置是当前调用栈的前一项