javascript - 使 Javascript 局部变量成为全局变量以进行递归循环

标签 javascript variables recursion scope

我有一个递归函数,它有一个局部变量。 它在特定条件下调用自己。 局部变量需要更新,但每次调用它都会创建一个特定于当前函数范围的新局部变量。 我怎样才能到达局部变量以访问所有递归循环而不是创建一个新循环? 像 __Callee.varname 这样的东西?

代码是:

var addAttribute = function(object,elem)
{
    var attributes = [];

    // only attribute without values
    if ( object instanceof Array )
    {
        for ( var value in object )
        {
            attributes.push(object[value]);
        }
    }
    // attribute with values
    else if ( object instanceof Object )
    {
        for ( var key in object )
        {
            if ( object[key] instanceof Array )
            {
                addAttribute(object[key],elem);
            }
            else
            {
                attributes.push(key+'=\''+object[key]+'\'');
            }
        }
    }
    // Only one attribute
    else if ( typeof object === 'string' )
    {
        attributes.push('\''+object+'\'');
    }
    // Invalid parameter
    else
    {
        console.log('Invalid parameter: '+typeof object);
    }

    console.log('<'+elem+' '+attributes.join(' ').toString()+' />');

}

我不想将变量设为全局变量,因为已经在其他函数和全局范围中使用了这个名称。

最佳答案

使用闭包

function fn() {
    function recursiveFunction() {
        // do something with x
        recursiveFunction();
    }
    var x = 0;
    recursiveFunction();
}

关于javascript - 使 Javascript 局部变量成为全局变量以进行递归循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40017796/

相关文章:

variables - 如何找到SSIS包中所有使用变量的地方?

c++ - 没有计数器的递归方法如何计数?

javascript - angular2/jasmine 注入(inject)的模拟服务不调用 spy

javascript - 使用 css 使 google maps api 循环

javascript - 使用零宽度空间和 execCommand ("copy"时发生冲突)

c++ - 需要简单的 C++ 递归解释

java - 优化冒泡排序

javascript - 如何使用方法更新 Vue.js 中的数组?

C# 等效于(将变量读取为不同类型)

c++ - 如何在 C++ 程序中使用参数为 "this"的 C 函数?