nodejs中的变量范围问题

时间:2014-11-06 19:10:16

标签: javascript node.js

我收到了这段代码:

var log = (function () {
 'use strict';
 var fs = require('fs'), baseName='', path = require('path');
 fs.readFile('./config.json', {encoding : 'utf-8'}, function (err, data) {
            if (!err) {
                var parsedConfig = JSON.parse(data);
                logPath = parsedConfig.logFile;
                baseName = path.basename(logPath, '.log');
                if (logPath.length==0 )
                    logPath = './alteredFile.log';
            } else {
                throw err;
            }
        });
}());

var module;
module.exports = log;

我正在尝试设置变量baseName,但在fs.readFile回调的一侧,它未设置且仍为空!怎么能解决这个问题?

1 个答案:

答案 0 :(得分:1)

baseName以及fspath只能在log函数的范围内使用。如果您希望它在log范围之外(包括fs.readFile),则必须在包含log的更广范围内声明它(如果log本身位于全局范围内全球范围)。