在函数内部调用外部声明的变量

时间:2018-08-30 11:40:15

标签: javascript angularjs typescript firebase firebase-realtime-database

我编写了一个函数来检查Firebase数据库中“ phonenumber”子代中是否保存有数据。 测试是OKEY!但是在此函数中,我无法调用外部声明的变量! 这是代码:

phoneNumberExistence: boolean;

FIREBASE_DATABASE.ref("Settings").child('phoneNumber').once('value', function(snapshot) {
      var exists = (snapshot.val() !== null);
      //console.log("Phone number existance: "+exists);
      if(exists){
        this.phoneNumberExistence = true; //the problem is here.. can't use this variable
        console.log("A phone number already exists.")
      }
      else{
        this.phoneNumberExistence = false; //the problem is here.. can't use this variable
        console.log("There is no phone number here :(");
      }
    })

有什么主意吗? 谢谢

1 个答案:

答案 0 :(得分:0)

使用箭头功能代替function(snapshot) {...}

... .once('value', (snapshot) => {
  var exists = (snapshot.val() !== null);
  ...
});

箭头函数用词法绑定它们的上下文,因此它实际上是指原始上下文。有关更多详细信息,您可以阅读this article