javascript'这个'由呼叫站点决定

时间:2018-05-04 02:39:03

标签: javascript this

阅读本书You-Don't-Know-JS并尝试理解this的概念。

  

这实际上是一个在调用函数时产生的绑定,它引用的内容完全由调用函数的调用站点决定。

我遇到了以下代码:



function a() {
  function b() {
    console.log(this.myVar);
  }
  var myVar = 2;
  b();
}

var myVar = 1;
a();




上面代码记录的最终结果1让我想知道上面代码的调用点是什么,因为很明显看到函数b在函数a中被调用,所以我认为期望的值应该是2而不是1.

1 个答案:

答案 0 :(得分:-3)

这是因为如果使用关键字函数定义所有函数属于全局范围,即使您可能无法执行此操作。在a()函数内部将其写为以下内容。

this.b = function() {...}

这应该可以满足您的需求。