一二三四五

One Two Three Four Five

本文关键字:一二三四      更新时间:2023-09-26

>控制台.log在返回 self.$show 变量后不会记录:

     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

这是因为 return 语句停止执行该函数。返回时,返回值将提供给调用 filterDate 的函数,该函数随后继续执行。

请考虑以下脚本:

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调用移到 return 语句之前:

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