了解多次迭代的返回工作方式

时间:2017-09-29 12:20:20

标签: javascript

我现在已经绕着递归一周了。我想说我很清楚如何运作。我挣扎的细节是归还的。在第8行return str;中,函数是否将str作为数组吐出?对于每次迭代,如果是这样,为什么我不能将其推送到newArr?现在我的输出是[undefined],我想知道为什么会这样。



function permAlone(str, n, output = []) {

  var n = n || str.length

  if (n == 1) {
    // console.log(str)
    return str
  } else {
    for (var i = 1; i <= n; i++) {
      permAlone(str, n - 1)
      if (n % 2) {
        var j = 1
      } else {
        j = i
      }
      swap(str, j - 1, n - 1)

    }
  }
}

function swap(a, i, j) {
  var temp = a[i]
  a[i] = a[j]
  a[j] = temp
}


var newArr = [];
newArr.push(permAlone('abc'.split('')));
console.log(newArr);
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

在大多数编程语言中,return语句是“return”或“return value”,其中value是从子例程返回的变量或其他信息。所以return语句返回你想要的预期结果。尝试以下示例返回并且不返回。 1)返回。

function sum(){
var test = 5 + 6;
return test;
}
console.log(sum());

2)没有回报。

function sum(){
var test = 5 + 6;;
}
console.log(sum());