首页 > 解决方案 > 读取文件 - 未定义文件名 [错误]

问题描述

我对 JavaScript 完全陌生,并且在使用 fs.readFile() 函数时遇到了麻烦。

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

但是,当 I err 为 false 时,我试图调用“提取器”函数作为参数——提取器将读取的数据分离到每个单词中。

我需要调用 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;
    });
}

标签: javascripthigher-order-functions

解决方案


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;
    });
}

推荐阅读