FE-DSHUI / DSHUI

前端王者小分队读书会
4 stars 1 forks source link

《你不知道的JavaScript(上卷)》-this概念和误区-2021-1-26分享 #22

Open AwakenedSomeone opened 3 years ago

AwakenedSomeone commented 3 years ago
  1. 两个误解:

需要明确一点:this在任何情况下都不指向函数的词法作用域(因为this是在运行时进行绑定的,类似于动态作用域) 举个栗子:


function foo() {
  var a = 2;
  this.bar()
}
function bar() {
  console.log(this.a)
}
foo() // undefined

这段代码通过this.bar()能调用成功,是因为foo是在全局调用的,所以this.bar能找到,然后执行打印,但是this.a在全局中找不到,所以创建了一个a,值为undefined。它并不会像词法作用域那样找到foo里的a = 2,不能试图通过this联通foo和bar的词法作用域。 2.总结: this是在运行时进行绑定的,并不是在编写时绑定,它指向什么完全取决于函数在哪里被调用。