我尝试创建一个递归函数,但是一个重要的变量(也是其他变量)在for(){}
循环之前被递归调用替换。我想要变量local(私有,仅用于当前函数而不是通过递归调用覆盖)...我已经尝试了很多东西......任何想法?
function parseChilds( elements, desired, array ){
if( !isArray(elements) ){
if( elements instanceof NodeList ){
elements = objectToArray(elements);
}
else {
elements = [elements];
};
};
for( var el = 0; el < elements.length; el++ ){
console.log("EL", elements[el], desired);
if( elements[el].tagName.toLowerCase() === desired.tag[0] && desired.tag.length === 1 ){
array.push(elements[el]);
};
if( elements[el].nodeType === 1 ){
var childrens = elements[el].children;
if( childrens.length > 0 && desired.tag.length > 1 ){
desired.tag = arrayRemoveFirst(desired.tag);
for( var child = 0; child < childrens.length; child++ ){
if( childrens[child].nodeType === 1 ){
parseChilds(childrens[child], desired, array);
};
};
};
};
};
};
Thx,J。
编辑: {for循环中el = 1之前的递归调用覆盖了desired.tag
...
答案 0 :(得分:0)
虽然我没有真正得到你尝试用你的代码做什么,只要你想要一个“本地,私有”变量,它在所有函数调用中“保持”相同,你可以独立地改变它递归,我认为你需要一个“静态”变量。看看这篇文章,它可以帮到你: