在两个导出函数中使用变量

时间:2016-04-27 19:04:19

标签: javascript node.js

我在两个导出的Node.js函数中使用变量时遇到错误

变量名是缓冲区,它是一个缓冲区。

我是否正确使用js代码中的变量缓冲区?

module.exports = {

    var buffer ;

    init: function(data) 
    {
        buffer = data ;
    },
    test: function(word) 
    {

        var readline = require('readline');
        var stream = require('stream');

        // string to buffer
        var baseText = buffer;
        var buf = new Buffer(baseText);

        //buffer to stream
        var bufferStream = new stream.PassThrough();
        bufferStream.end(buf);

        var readLines = readline.createInterface({
            input: bufferStream,
        });

        var count = 0;
        readLines.on('line', function (line)
            {
                if(line.toLowerCase().indexOf(word.toLowerCase()) != -1)
                return true;

            }
        );

        return false;
    }
}

3 个答案:

答案 0 :(得分:0)

{...}是一个对象字面值。它只能包含属性声明(name: value)。

var是一份声明;你不能把它放在一个对象文字的中间。

您需要单独声明变量。

答案 1 :(得分:0)

您无法在对象文字中声明变量。如果您在module.exports之外定义,那么就不会出现任何错误。

var buffer ;

function init(data) {
   buffer = data ;
}

function test(word) {
    var readline = require('readline');
    var stream = require('stream');

    // string to buffer
    var baseText = buffer;
    var buf = new Buffer(baseText);

    //buffer to stream
    var bufferStream = new stream.PassThrough();
    bufferStream.end(buf);

    var readLines = readline.createInterface({
        input: bufferStream,
    });

    var count = 0;
    readLines.on('line', function (line) {
            if(line.toLowerCase().indexOf(word.toLowerCase()) != -1)
               return true;
    });
    return false;
}

module.exports = {
    init: init,
    test: test
}

答案 2 :(得分:0)

您无法在对象文字中声明变量。

尝试这样的事情:

var buffer;

module.exports = {

    init: function(data) {}
    // the rest of your code

}

这类似于revealing module pattern