一二三四五

时间:2016-03-08 17:34:37

标签: javascript

self。$ show 变量中返回后,console.log不会记录:

     filterDates: function() {
            var self = this;
            self.startDay = self.$startDate.val();
            self.endDay = self.$endDate.val();

       if (self.endDay == 0) {
                return false
            } else {
                self.$targets = $('#mixContainer').find('.mix');
                self.$show = self.$targets.filter(function() {
                    self.date = self.$targets.attr('data-date');
                    return (self.date >= self.startDay) && (self.date <= self.endDay);
                    console.log("this DOES NOT log")
                });
                console.log(self.$show +"this WILL log");   // says [object, Object]
                self.parseFilters();
                return self.$show;                          //THIS DOES NOT WORK 
                console.log(self.$show +"THIS DOES NOT log")
            } 
         }

我不明白为什么它不记录也不会导致任何错误。我在上下文中有脚本:http://codepen.io/EricBintner/pen/LNPrZQ

1 个答案:

答案 0 :(得分:2)

那是因为return语句停止执行该函数。返回时,返回值将被赋予调用filterDates的函数,然后该函数继续执行。

实施例

考虑以下脚本:

function f1(arg){
    console.log(arg);
    arg = arg*2;
    return arg;
    console.log("arg after return: "+arg);
}

function caller(){
    console.log(f1(2));
}

caller();

现在,控制台输出将如下所示:

2
4

你会注意到那里没有像arg after return: 4这样的陈述。那是因为该调用在eturn语句之后发生,该语句将执行从f1移回给调用者。

您的案例

在您的具体问题中,您应该在退货声明之前移动console.log来电:

console.log("Now this DOES log! :-)")
return (self.date >= self.startDay) && (self.date <= self.endDay);