nodejs 递归遍历。。

编程

nodejs 递归遍历。。

又是 几个小时……debug

有问题的代码是这样的,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let processDir = function(dir){
.....
let files = fs.readdirSync(dir);
console.log(files);
for (i = 0;i < files.length;i++){
tmp_path = path.resolve(dir, files[i]);
if (fs.statSync(tmp_path).isDirectory()){
const r = processDir(tmp_path);
....
}else{
.....
}
}
return res;
}

读取目录中的所有目录和文件,如果是目录,递归读取,如果是文件,则输出,一些操作,

但是问题在于,实际运行时,遍历的目录会比实际目录少,而且,产生的结构也是错误的.

问题在于 for 中的变量定义

上面代码中,for 没有使用 let var const,而是直接使用 i ,导致,这个i时全局变量,所以,每次递归时,用的都是同一个 i ,所以,子函数返回时, i 已经被改变,超出范围。

,,,,我还寻思是堆栈溢出了……..

Author: 哒琳

Permalink: http://blog.jieis.cn/2022/4b7bd02f-a511-4c1c-9d13-a066295a1d03.html

Comments