簡體   English   中英

引用自身的javascript函數

[英]javascript function that refers to itself

我想知道當函數引用自身(例如以下函數)時在javascript中稱為什么。

此功能用於遞歸瀏覽硬盤驅動器上的文件夾。 v變量是原始文件,“文件夾”對象只是文件夾/文件的列表/數組。

我想知道,如何保留原始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();    
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM