当一个函数被调用时,会创建(执行)一个上下文,这个执行记录会包含函数在哪里被调用。
1、this = 谁调用this,this就指向什么。
2、this在运行时绑定,并不是在编写时绑定。
3、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 的调用位置
从调用栈中,分析出真正的调用位置的,因为它决定了 this 的绑定