在函数中初始化JavaScript的全局变量

时间:2018-09-16 05:06:29

标签: javascript

我试图通过在构造函数中声明全局变量的值,然后使用函数中的值对其进行初始化来更改它的值。我正在尝试的代码与我在此处键入的代码非常相似。该代码执行,但什么都没有打印出来。有人可以告诉我发生了什么事吗?

class Sample{
  constructor(){
    let joey ="";
  }

  fire(){
    joey ="Yo";
    console.log(joey);
  }
}

3 个答案:

答案 0 :(得分:3)

使用“ this”关键字在构造函数中声明全局变量。

class Sample{
 constructor(){
    this.joey ="";
 }

 fire(){
    this.joey ="Yo";
    console.log(this.joey);
 }
}

答案 1 :(得分:0)

使用类时,请使用“ this”运算符并为“ this”对象分配值,因为“ let joey”的作用域不是全局的(请按照“ let”作用域定义)。参见下文-

class Sample{
 constructor(){
    this.joey ="";
 }

 fire(){
    this.joey ="Yo";
    console.log(this.joey);
 }
}

答案 2 :(得分:0)

变量joey不在fire的范围内。

创建对象(在本例中为类Sample的实例)时,可以使用this对象设置该对象的属性,因为它是对当前对象的引用。如果您使用letvar,则该变量将包含在声明它的函数中(在这种情况下为constructor)。

class Sample{
 constructor(){
  this.joey ="";
 }

 fire(){
   this.joey ="Yo";
   console.log(this.joey);

 }
}
let test = new Sample();
test.fire();