引用自身的javascript函数

时间:2016-05-10 10:46:59

标签: javascript function recursion

我想知道在javascript中调用它是什么,当一个函数引用它自己时,如下面的函数。

此功能用于递归浏览硬盘驱动器上的文件夹。 v变量是原始文件,“Folder”对象只是文件夹/文件的列表/数组。

我想知道,如何保留原始的v变量?每当函数运行时(它本身)它都会不断变化,因此我无法访问启动该函数的原始变量。

5

2 个答案:

答案 0 :(得分:1)

您可以使用闭包来捕获v

function recursefolders(v) {
  var capturedV = v;

  function folderTraversal(v) {
    var f = new Folder(v);
    while (!f.end) {
      if (f.filetype == "fold") {
        var foldername;
        foldername = f.pathname + f.filename
        folderTraversal(foldername);
        alert('This is the original variable' + capturedV);
      }
      f.next();
    }
    f.close();
  }

  folderTraversal(v);
}

答案 1 :(得分:0)

解决方案1: 你可以发送两个参数original_v和v。其中original_v不会改变,v会改变。在递归方法中,执行此操作非常正常。

解决方案2: 制作一个包装器clojure / function ..像这样的东西

function recursefolders(v){
    var original_v = v;
    recurseSubfolders(original_v);
    function recurseSubfolders(v){
        while (!f.end) {
            if (f.filetype == "fold") {
                var foldername;
                foldername =  f.pathname + f.filename
                recurseSubfolders(foldername);
                alert('This is the original variable' + original_v);
            }

            f.next();
        }   

        f.close();    
    }
}