在 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
答案 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);