调用递归函数并保持变量本地

Call recursive function and keep variable local

本文关键字:变量 递归函数 调用      更新时间:2023-09-26

我尝试创建一个递归函数,但是在循环之前for(){}一个重要的变量(其他变量(被递归调用所取代。我想要变量局部(私有,仅适用于当前函数,不被递归调用覆盖(...我尝试了很多东西...知道吗?

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);
                        };
                    };
                };
            };
        };
};

谢谢,J.

编辑:desired.tag被 el = 1 在 for 循环中的递归调用覆盖...

虽然我并不真正理解你试图用你的代码做什么,但只要你想有一个"局部的,私有的"变量,它在所有函数调用中"保持不变",你可以独立于递归来更改它,我认为你需要一个"静态"变量。 看看这篇文章,它可以帮助你:

如何在 Javascript 中声明静态变量