我对我的代码在终端显示的内容感到有点困惑。
我有这个for循环。它只计算从8到0 - 没有什么特别的 - 在每个循环中它应该做一些" if,else"并将结果记录到控制台。因为它没有用,我打印了计数变量。
我的期望是:
我是:8 结果, 我:7 结果 ...现实:
我是:8 我:7 我:6 ... 在那之后... 结果结果......for(var i = 8; i >= 0; i--) {
console.log('i: ', i);
if(searchSeq(tempPruefanw, i) == 'found sth') {
console.log('pruefanweisung: ', pruefanweisung);
res.send(pruefanweisung);
break; // break for
} else {
// nothing found at all
pruefanweisung = "no file found";
}
}
为什么日志记录输出是这样的,我可以假设我的代码工作就像跟踪输出一样吗? - 我的意思是它会执行9次代码的每一行,而不是像我预期的一块又一块或者这只是console.log的风格? JavaScript处理函数的例程是什么? - 我一步一步地思考......
在if语句开始的同一行,我写了函数结果和字符串之间的比较。不幸的是,searchSeq(tempPruefanw,i)的结果是未定义的。我读过一些关于" undefined"的文章。在JavaScript中但没有任何帮助我解决我的问题。 searchSeq()应该只返回一个字符串 - 没什么特别的。该函数工作正常,它记录它所做的一切,但然后返回undefined。在我的所有其他功能中,返回的东西按预期为我工作。经过一些谷歌搜索后,我发现问题可能是我的回归不在主函数中。我将main函数解释为searchSeq()。我试着给一个var res;直接在var searchFile;下,然后我分配了结果并试图在find.file()的结束括号后返回这个结果变量。结果是一样的。未定义。
function searchSeq(tempFileName, i) {
var searchFile = tempFileName.replace(tempFileName[11], i);
find.file(searchFile, __dirname, function(files) {
if(files.length <= 0) {
console.log('No file found for: ', searchFile);
return 'nth found';
} else {
var filePath = editPath(path.resolve(files[0]));
console.log('File found for: ', filePath);
pruefanweisung = filePath;
return 'found sth';
}
});
}
为什么我收到的是未定义的结果而不是预期的字符串? 我怎样才能解决这个问题?