如何使用 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);
}
当我尝试在两个函数中访问全局变量时,我有疑问。一个函数是箭头函数,另一个函数是普通函数。箭头函数工作正常,但普通函数不能打印全局变量。为什么?
示例代码
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);
}