我在javascript中使用了一种递归方法,它工作得很好,直到我把它放在一个命名空间中。该函数从数组中返回一个元素,该元素具有给定的quoteproduct id 作为它的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 = [];
该数组在页面加载时填充。
现在,每当我调用该函数时,都会出现“递归过多”错误。我究竟做错了什么 ?同样,在我将函数和数组放入命名空间之前,这个函数就起作用了。