我有一個時間的魔鬼試圖弄清楚這一點。我有一個函數返回另一個函數的值。在第二個函數中,我有第三個條件,它不會得到那個返回值。我無法弄清楚。我相信這是一個範圍問題,但我無法解決它。這全都在jquery插件中。返回函數調用和三級條件不工作
somefunctionA: function(){
var self = this;
var data = somecollection_of_data;
var storeReturn = $.map(data, function(obj, i) {
return (function(i){
return self._returnFilteredData(id);
})(obj.i);
});
},
__returnFilteredData: function(i){
var self = this;
if(some_conditionals){
return (
self.url ?
(function(){
if(some_more_conditionals){
self._getDBdata(); <<-- NEVER FIRES OFF
}
}) : self._getDBdata() <<--- THIS ONE FIRES OFF
)
}
}
},
等什麼最終發生的是我,因爲在一些條件語句是第一個第三未能得到一個「空」的storeReturn陣列英寸我無法進入...去測試。
「_getDBdata()」函數只是基於其他數據返回散列。
關於發生了什麼的任何想法?我嘗試了一切,我無法解決這個範圍/關閉問題。
凡定義'self'?我在'someFunctionA'中看不到它。 – jfriend00
從'$ .map'中使用的回調匿名函數返回的自執行函數中使用的函數返回的函數。如果你不能編寫(和調試)如此複雜的代碼 - 從一些簡單的工作開始,並逐步使其更加複雜。 – zerkms
三元語句通常不能很好地處理一堆函數調用和if/else語句,它們僅用於簡單比較。嘗試用if/else語句替換它,看看是否有效。 – adeneo