我需要一些帮助来理解如何从我想作为 module.exports 传递的函数中复制结果。这里存在全局和本地范围的问题:
// Declare node.js module dependencies from API
var walk = require('walk'),
filter;
// Declare variables
var files = [];
var filteredFiles = [];
var i = 0;
var fileextension = '.html';
var foldername = 'node_modules';
var filter = {
followLinks: false
};
var walker = walk.walkSync(foldername, filter);
var temp = [];
module.exports = {
scanDirWithFil: function () {
walker.on('file', function(root, stat, next) {
files.push(stat.name);
if (files[i].indexOf(fileextension) != -1) {
filteredFiles.push(stat.name);
console.log(files[i]);
next();
i++;
}
else {
next();
i++;
}
console.log('Number of filtered files in array: ' + filteredfiles.length + ", Total number of files in array: " + files.length)
return files, filteredFiles;
});
temp = files.toString();
return temp;
}
};
正如这里所看到的,我正在尝试返回函数 scanDirWithFil 的结果,但是返回是通过 temp,它来自 files.toString。这就是问题所在。由于范围问题,文件现在变成了一个空数组。从 walker.on 方法返回的文件数组实际上并没有超出其自身范围。
如果我说的话是正确的(这是一个范围问题)..有人可以指导我或帮助我解决这个问题吗?
谢谢你,布赖恩