功能无法正确返回

时间:2013-06-17 07:51:03

标签: javascript function return

我有这个功能:

Tickets.prototype.each = function(func) {
    _.each(this.getTickets(), func);
};

Tickets.prototype.findWhere = function(key, val) {
    this.each(function(ticket) {
        if(ticket.get(key) === val) {
            console.log(ticket);
            return ticket;
        }
    });
};

然后我在这里调用findWhere:

console.log(this.collection.findWhere('ID', $ticketRow.data('id')));

当我运行它时,.findWhere旁边的console.log打印正确的票证对象..但是我调用它的console.log打印'undefined'。

导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:2)

你可能必须

Tickets.prototype.findWhere = function(key, val) {
    var tick;
    this.each(function(ticket) {
        if(ticket.get(key) === val) {
            console.log(ticket);
            tick = ticket;
        }
    });
    return tick;
};

答案 1 :(得分:1)

Tickets.prototype.each = function(func) {
    $.each(this.getTickets(), func);
}; 

Tickets.prototype.findWhere = function(key, val) {
    var tick;
      this.each(function(ticket) {
            if(ticket.get(key) === val) {
                console.log(ticket);
                tick = ticket;
                return false; //break out of .each 
            }
      });
     return tick;
 };

你不能突破_.each,你只能打破$.each(如果你使用jquery)。