引用自身的javascript函数

javascript function that refers to itself

本文关键字:javascript 函数 引用      更新时间:2023-09-26

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

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

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

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

您可以使用闭包来捕获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:您可以发送两个参数original_v和v。其中original_v不变,v变。在递归方法中,这样做很正常。

解决方案2:制作一个包装clojure/函数。。像这样的

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();    
    }
}