我的函数不返回任何内容

My function doesn't return anything

本文关键字:任何内 返回 函数 我的      更新时间:2023-09-26

我已经在Heap的函数中插入了一个字符串数组。虽然function generate()正确打印输出console.log(permut);,但它不返回任何数据。

版本 1 带return arr

  var arrStr = ['a', 'a', 'b'];
  var generated = generate(arrStr, arrStr.length);
  console.log(g2);

  function generate(arr, n) {
    if (n === 1) {
      console.log(arr);
      return arr;
    } else {
      for (var i = 0; i < n; i++) {
        generate(arr, n - 1);
        if (n % 2 === 0) {
          swap(i, n-1, arr);
        } else {
          swap(0, n-1, arr);
        }
      }
    }
  }
  function swap(a, b, ar) {
    var temp = ar[b];
    ar[b] = ar[a];
    ar[a] = temp;
  }

permut = permut.concat(arr);的版本 2

  var arrStr = ['a', 'a', 'b'];
  var generated = [];
  generate(arrStr, arrStr.length, generated);
  console.log(generated);

  function generate(arr, n, permut) {
    if (n === 1) {
      permut = permut.concat(arr);
      //console.log(permut);
    } else {
      for (var i = 0; i < n; i++) {
        generate(arr, n - 1, permut);
        if (n % 2 === 0) {
          swap(i, n-1, arr);
        } else {
          swap(0, n-1, arr);
        }
      }
    }
  }
  function swap(a, b, ar) {
    var temp = ar[b];
    ar[b] = ar[a];
    ar[a] = temp;
  }
版本

1 返回变量 generated 的未定义,版本 2 返回空数组。

我试图返回一个测试字符串"asd",但仍然没有得到任何东西。

在 JavaScript 函数中声明的变量,成为函数的 LOCAL。看看Javascript范围。换句话说,您对函数内部的函数参数所做的更改不会影响函数外部的参数变量。

只需在算法结束时返回生成的对象即可。

例:

var n = 1;
incrementByOne(n);
console.log(n) //still 1
function incrementByOne(number) {
    number++;
}

解决方案是返回结果并使用变量获取它:

var n = 1;
n = incrementByOne(n);
console.log(n) //now it's 2
function incrementByOne(number) {
    return number++;
}