Javascript 读取文件-未定义文件名[错误]

Javascript 读取文件-未定义文件名[错误],javascript,higher-order-functions,Javascript,Higher Order Functions,我对JavaScript一无所知,在使用fs.readFile()函数时遇到了问题 我需要读取一个文件,并确定是否必须调用successFn(当err boolean为false时)或errorFn(如果err boolean为true) 然而,当I err为false时,我尝试调用一个“extractor”函数作为参数——extractor将读取的数据分离到每个单词中 我需要调用fs.readFile,所以我需要使用参数,其中一个参数是fileName 评分员将使用他自己的文件测试我的代码,所

我对JavaScript一无所知,在使用fs.readFile()函数时遇到了问题

我需要读取一个文件,并确定是否必须调用successFn(当err boolean为false时)或errorFn(如果err boolean为true)

然而,当I err为false时,我尝试调用一个“extractor”函数作为参数——extractor将读取的数据分离到每个单词中

我需要调用fs.readFile,所以我需要使用参数,其中一个参数是fileName

评分员将使用他自己的文件测试我的代码,所以我不应该定义文件名,但我被要求定义它(我理解为什么要求我这么做,但我觉得应该有一种方法来解决这个问题。)

另外,JavaScript语法非常不直观,因此我可能会在语法上犯一些错误,但这是我的代码,请告诉我如何解决我的问题:

function readAndExtractWith(extractor) {
    fs.readFile(fileName, 'utf-8', (err, data) => {
        if (err) {
            errorFn(err);
        }
        else {
            data = extractor();
            successFn(data);
        }
        return extractor;
    });
}

fileName
未定义,因为您从未定义过它。由于在函数中使用该变量,因此需要将变量作为参数传递、在函数中指定或全局定义

var fileName = "stackoverflow.jpg";

// when executing the function pass the fileName parameter
readAndExtractWith(extractor, fileName);

function readAndExtractWith(extractor, fileName) {
    fs.readFile(fileName, 'utf-8', (err, data) => {
        if (err) {
            errorFn(err);
        }
        else {
            data = extractor();
            successFn(data);
        }
        return extractor;
    });
}

fileName
未定义,因为您从未定义过它。由于您在函数中使用它,因此需要将变量作为参数传递或在函数中指定它。感谢您的评论。我理解为什么要求我定义文件名——这是因为它从未在函数中定义或作为参数传递。但是,我无法知道文件名变量是什么,因为它将由分级器任意定义。我想知道是否有任何方法可以在使用fs.readFile时修复此问题,而无需硬编码文件名。无论哪种方法,您都需要将文件传递到
fs.readFile()
,以便它可以处理它。
fileName
来自哪里?请在你的问题中包括这一点。