返回函数的Javascript范围问题

时间:2014-05-28 17:22:53

标签: javascript backbone.js underscore.js

我在骨干视图中创建了一个函数,在某些条件下返回true或false。 问题是返回值是严重未定义的。我认为这是一个范围问题。 这个问题与Ajax返回不同,因为我的返回是在迭代内而不是在ajx调用中。我的代码中的先前Ajax调用是同步而不是异步。我的迭代中的console.log被正确打印,只有return语句似乎不起作用。

    isAlreadyRegistered: function(){
      this.checkUser = new Utenti();
      this.checkUser.fetch({async:false});
      _.each(this.checkUser.models, function (user) {
         if(user.get("idTwitter") === this.utente.get('idTwitter')){
           console.log("gia reg");
           return true;
         } else {
           console.log("non reg");
           return false;
         }
      }, this);
    }

    console.log(isAlreadyRegistered());//ever undefined

1 个答案:

答案 0 :(得分:2)

您不想使用each,而是everysome。它们将根据您的回调调用返回的内容返回布尔值。

isAlreadyRegistered: function(){
  this.checkUser = new Utenti();
  this.checkUser.fetch({async:false});
  var id = this.utente.get('idTwitter');
  return _.some(this.checkUser.models, function (user) {
    return user.get("idTwitter") === id;
  });
}