要知道 this 指向问题,需要知道函数调用栈,函数调用的位置。
先来看看以下这个例子:
function baz() { // 当前调用栈:baz // 因此,当前调用位置是全局作用域 console.log("baz") bar(); // bar 的调用位置 } function bar() { // 当前调用栈是 baz -> bar // 因此,当前调用位置在 baz console.log("bar") foo(); // foo 调用位置 } function foo() { // 当前调用栈是 baz -> bar -> foo // 因此,当前调用位置在 bar 中 console.log("foo") } baz() // baz 的调用位置绑定规则
独立函数调用
function foo() { console.log(this.a) } var a = 10 foo() // 10
在本例子中 this 默认指向了 window 全局对象
为什么呢?
因为,函数调用时不带其他修饰的函数调用,