用于处理函数的JavaScript的过程是什么?

时间:2018-02-13 08:16:31

标签: javascript

我对我的代码在终端显示的内容感到有点困惑。

我有这个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';
        }
    });
}

为什么我收到的是未定义的结果而不是预期的字符串? 我怎样才能解决这个问题?

0 个答案:

没有答案