名前空間に配置するまで、javascriptで再帰メソッドを使用しています。これは完全に正常に機能しました。この関数は、指定されたquoteproductidを配列のid属性として持つ要素を返します。これはネストされた配列であるため、関数は再帰的です。これは関数宣言です:
QuoteProductService.getQuoteProduct = function (quoteproductid) {
var founditem = null;
$.each(QuoteProductService.QuoteProductConfigurations, function (index, item) {
if(item.id == quoteproductid) {
founditem = item;
return false; // break the $.each if an item is found
} else {
founditem = QuoteProductService.getQuoteProduct(item.children, quoteproductid);
if(founditem != null) return false; // break the $.each if an item is found
}
});
return founditem;
}
これが私が名前空間を宣言する方法です:
var QuoteProductService = QuoteProductService || {};
これは、関数で使用している名前空間の配列です。
QuoteProductService.QuoteProductConfigurations = [];
この配列は、ページが読み込まれるときに入力されます。
これで、関数を呼び出すたびに、「再帰が多すぎます」というエラーが発生します。私は何を間違っているのですか?繰り返しますが、この関数は、関数と配列を名前空間に配置する前に機能しました。