如何在变量JavaScript

时间:2015-11-04 03:52:10

标签: javascript recursion return return-value

我需要将返回值存储在变量中。

我想知道如何修复此代码。我知道如果b的值为3,我会得到值= 2,但如果函数执行多次迭代,我就会被识别出来。我读到我应该使用回调或其他东西,但我不知道如何,也解释为什么我的代码不起作用,我应该如何解决它。 (当然这段代码是出于演示目的,好像我会告诉你原始它可能会让人感到困惑。)非常感谢!

var b = 70;

function myfunction() {
    b--;
    if (b < 3) {
        return b;
    } else {
        myfunction();
    }
}
value = myfunction();
console.log(value);

2 个答案:

答案 0 :(得分:3)

您的代码:myFunction()将在第一次调用时返回void / undefined,这不是递归方法。

以下示例是一种递归方法。递归函数通常会接收一个要处理的参数,并返回一个冒泡(返回)到第一个调用者的最终值。

function myfunction(b){
  b--;
  if(b<3) return b;
  else return myFunction(b);
}

当你调用递归函数时,你应该准备一个逃避测试。否则你可能会陷入无限循环。

无限递归的示例

function badFunction(){
return badFunction();
}
// DON'T call badFunction()

递归示例

var b = 70;
var safety = 1000;

function myfunction(local_b) {
  if(safety<0) return;
  safety--;

  // main task
  local_b--;
  
  if (local_b < 3) {
    return local_b;
  }

  return myfunction(local_b);

}
var value = myfunction(b); // when b = 70, value = 2
console.log(value);
document.getElementById('value').innerHTML = value;
<span id="value">_</span>

答案 1 :(得分:-1)

using (var img = new Bitmap(insertBarCode.BARCODEQUANTITYNAMERUTE))
{
    Picturebox1.Image = new Bitmap(img);
}