[英]Wondering how to debug Node.js learnyounode “filter ls” exercise
我正在通过learningyounode练习。 特别是“过滤器ls”。 如果您不熟悉此练习,请参考此说明。
这是官方解决方案 :
var fs = require('fs');
var path = require('path');
fs.readdir(process.argv[2], function (err, list) {
list.forEach(function (filename) {
if (path.extname(filename) === '.' + process.argv[3]) {
console.log(filename);
}
});
});
这是我的解决方案:
var fs = require('fs');
var path = require('path');
var directory = process.argv[2];
var fileExtension = "." + process.argv[3];
function sortFiles (callback){
fs.readdir(directory, function(err,files){
if(err) return callback(err);
callback(null,files);
});
};
sortFiles(function(err,files){
var fileExt = "";
for(var i = 0; i < files; i++){
debugger;
fileExt = path.extname(files[i]);
if(fileExt === fileExtension){
console.log(files[i]);
};
};
});
问题:
我的代码什么都不输出。 据我所知,我的代码和官方解决方案之间的最大区别是:
list.forEach(function (filename) {
if (path.extname(filename) === '.' + process.argv[3]) {
console.log(filename);
}
vs:
for(var i = 0; i < files; i++){
fileExt = path.extname(files[i]);
if(fileExt === fileExtension){
console.log(files[i]);
};
};
2个问题:
1)如何调试此代码? 我尝试了node debug node.js
从中可以看到,当我的目录是包含cs文件和js文件的文件夹时,文件是一个数组,但是每个索引都包含“”。
2)为什么我的简单for循环方法不起作用? 他们为什么选择.foreach
? 除了更简洁以外,还有其他原因吗?
1) https://github.com/node-inspector/node-inspector
2)忘记检查length
:
for(var i = 0; i < files.length; i++){
--^--
但是forEach
读起来更好,而且更惯用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.