Javascript 从递归函数中传递数组

Javascript 从递归函数中传递数组,javascript,recursion,google-apps-script,Javascript,Recursion,Google Apps Script,我试图列出树结构中的所有文件。我在网上找到了以下代码,可以执行此操作,但会将文件夹和文件名输出到错误日志中。(我正在使用BetterLog将其发送到电子表格。我希望在函数运行时将信息保存到数组中,问题是函数是递归的,我不知道如何解决此问题 function getChildFolders(parent) { Logger = BetterLog.useSpreadsheet('1nJ3fTFYQgwwXYik3LqAoX2M1KHj4lskrxyX0Y9p6ci8'); var chil

我试图列出树结构中的所有文件。我在网上找到了以下代码,可以执行此操作,但会将文件夹和文件名输出到错误日志中。(我正在使用BetterLog将其发送到电子表格。我希望在函数运行时将信息保存到数组中,问题是函数是递归的,我不知道如何解决此问题

function getChildFolders(parent) {
Logger =    BetterLog.useSpreadsheet('1nJ3fTFYQgwwXYik3LqAoX2M1KHj4lskrxyX0Y9p6ci8');

var childFolders = parent.getFolders();

while (childFolders.hasNext()) {

var childFolder = childFolders.next();

Logger.log("Folder Name: " + childFolder.getName());
Logger.log("Folder URL:  " + childFolder.getUrl());

var files = childFolder.getFiles();

while (files.hasNext()) {

// Print list of files inside the folder
  Logger.log(files.next().getName());  
  }

  // Recursive call for any sub-folders
  getChildFolders(childFolder);
}


}

那么,只需将数组作为函数的参数传递,如下所示:

function getChildFolders(parent,array) {
  var childFolders = parent.getFolders();

  while (childFolders.hasNext()) {

    var childFolder = childFolders.next();

    array.push("Folder Name: " + childFolder.getName());
    array.push("Folder URL:  " + childFolder.getUrl());

    var files = childFolder.getFiles();

    while (files.hasNext()) {

      // Print list of files inside the folder
      array.push(files.next().getName());  
    }

    // Recursive call for any sub-folders
    getChildFolders(childFolder, array);
  }

  return array;
}

function test() {
  var array = getChildFolders(DriveApp.getRootFolder(), []);
  Logger.log(array);
}

它是否在每次递归调用函数时生成并保存整个数组的副本?不,您必须创建数组并将其传递给函数,然后函数在递归调用时将其传递给自身。整个执行过程中只有一个数组。没有复制或重新创建数组。谢谢。这回答了我的问题很好。