如何使用 Javascript 在函数中访问全局变量?

How to global variable access in function using Javascript?

当我尝试在两个函数中访问全局变量时,我有疑问。一个函数是箭头函数,另一个函数是普通函数。箭头函数工作正常,但普通函数不能打印全局变量。为什么?

示例代码

class Data1{

    constructor(m1){
        this.m1 = m1
    }
}

class Data2 extends Data1{

    func1(){
        console.log(this.m1)
        this.m1 = 20
    }
    func2=()=>{
        console.log(this.m1)
        this.m1 = 40
    }


}

d1 = new Data1(10)
d2 = new Data2()
d2.func1()
d2.func2()

输出

undefined  
20

在线:

d2 = new Data2()

您正在不带任何参数地调用 Data1 的构造函数。 m1 将是未定义的。 您需要将参数传递给 Data1 的构造函数。这将通过将参数传递给 Data2 自动完成。

d2 = new Data2(10);

这应该可以解决您的问题。

结果与函数(箭头函数)的范围无关,甚至与 this 绑定无关。

在常规函数中,this 关键字表示调用该函数的对象,可以是 window、文档、按钮或其他任何东西。

对于箭头函数,this 关键字始终表示定义箭头函数的对象。

如果您在 Data1 中编写构造函数并将 func1 绑定到 Data1 对象,它将起作用。 例如。

constructor(){
    this.func1 = this.func1.bind(this);
}