与Javascript中的变量范围相关的问题

Pul*_*wal -1 javascript

我希望我的代码给我"2"作为输出,但这显示我"1"作为输出.请告诉我我的代码必须做哪些更改才能给出正确的结果.

var a = 1;

function x() {
  var a = 2;

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

  b();
}

x();
Run Code Online (Sandbox Code Playgroud)

Que*_*tin 5

全局变量的特性window对象,所以self.a给你1,因为selfwindow.(进一步阅读:"this"关键字如何工作?).

局部变量不是任何对象的属性.无法访问它们,就好像它们是对象的属性一样.只是记录a而不是self.a.