我想知道在javascript中调用它是什么,当一个函数引用它自己时,如下面的函数。
此功能用于递归浏览硬盘驱动器上的文件夹。 v变量是原始文件,“Folder”对象只是文件夹/文件的列表/数组。
我想知道,如何保留原始的v变量?每当函数运行时(它本身)它都会不断变化,因此我无法访问启动该函数的原始变量。
5
答案 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();
}
}