2016-03-08 56 views
-4

的的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

+3

return語句後,函數就會死亡。 –

+3

return語句結束函數執行並指定要返回給函數調用方的值。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return – danronmoon

+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移回給調用者。

你的情況下

在您的具體問題,您應該在return語句之前移動電話console.log

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

啊哈。謝謝。所以我仍然在尋找問題。 –

+0

您應該將'console.log'調用移到return語句之前。 – bigblind

+0

「這個問題在這裏可能已經有了答案:」其實沒有。它沒有。這隻會讓人感到困惑。我無法刪除這篇文章。這對每個人都是不利的,沒有人會爲了改善社區而刪除它。 –