【发布时间】:2012-09-27 00:10:31
【问题描述】:
在下面的代码中,我试图将mydata 传递给回调。这是我遇到的一个更大问题中的一个示例问题。我假设这是一个范围问题。我的代码有什么问题和/或我应该怎么做?
var EventEmitter = require('events').EventEmitter;
var myevent = new EventEmitter();
var mydata = 'my data!';
function myfunc (data, mydata) {
console.log(data);
console.log(mydata);
};
myevent.on('data', function(data, mydata) {myfunc(data,mydata)});
myevent.emit('data', "data!");
返回:
data!
undefined
我希望它返回:
data!
my data!
【问题讨论】:
-
您应该避免将局部变量和全局变量命名为相同的名称,因为它们会相互影响并造成混淆。
-
如果变量是全局变量(或者如果
myfunc可以通过闭包访问它),为什么要“传递”它? -
@bfavaretto 我试图模拟一个更大的问题,我认为这是 event-stream 和 socket.io 的不同范围问题。我了解到我的 event-stream.pipepline.emit 应该发出 socket.io 套接字,以便我可以执行 socket.emit(data),这完全是一个不同的问题。
标签: javascript node.js scope eventemitter