javascript - 是否可以将 JavaScript 变量的范围限定为函数以及该函数对其自身的递归调用?

标签 javascript

我所处的情况是我有一个正在调用函数的循环。该函数一旦被调用就会递归调用自身。

有没有办法可以将变量的范围限定为函数以及第一次调用生成的递归调用链?

类似这样的事情:

for(var i=0;i<100;i++)
{
  myFunction();
}

function myFunction()
{
   var someNumber = 200;
   someNumber -= 10;
   if( someNumber > 0)
   {
      myFunction();
   }
}

第一次调用 someNumber 的第二次迭代将是 190 而不是 200。这可以实现吗?

如果这里有任何令人困惑的地方,请告诉我。

最佳答案

是的,使用内部函数来执行递归:

for (var i = 0; i < 100; i++)
{
    myFunction();
}

function myFunction()
{
    var someNumber = 200;
    (function innerFunction()
    {
        someNumber -= 10;
        if( someNumber > 0)
        {
            innerFunction();
        }
    })();
};

请注意,您有语法错误。您的 while 需要是 for

编辑:也许您的实际代码有所不同并需要递归函数,但仅使用循环您的示例会简单得多:

function myFunction()
{
    for (var someNumber = 200; someNumber > 0; someNumber -= 10)
    {
    }
};

关于javascript - 是否可以将 JavaScript 变量的范围限定为函数以及该函数对其自身的递归调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7560973/

相关文章:

javascript - 有人可以告诉我如何使这个jquery插件的滚动条从上到下运动吗?http ://plugins. jquery.com/project/vTicker

javascript - 按过去 12 个月(年初至今)的日期过滤数组

javascript - 如何在数字字段中只允许 2 位小数

javascript - Launchpad 标题后退按钮的事件处理程序

javascript - 简单的 Vuejs 验证代码无法按预期工作?

java - HighCharts 动画安卓

javascript - 单击或悬停后可以更改状态吗?

javascript - AngularJS 模板未加载/渲染

Javascript 仅在 ios 上抛出类型错误

javascript - 这个客户端应用程序安全吗?