在下面的代码中,我试图让mydata
传递给回调函数。这是我遇到的一个更大问题的示例问题。我假设这是一个范围问题。我的代码有什么问题和/或我应该怎么做?在JavaScript中将全局变量传递给事件回调函数?
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!
你应该避免命名局部和全局变量相同的名字,因为他们将跟随对方,造成混乱的全局变量全局变量。 – jbabey
如果变量是全局变量(或者'myfunc'可以通过闭包访问它),那么为什么你会关心“通过”呢? – bfavaretto
@bfavaretto我试图模拟一个更大的问题,当时我认为这是一个与事件流和socket.io不同的范围问题。我知道我的event-stream.pipepline.emit应该发出socket.io套接字,这样我才能完成socket.emit(data),这完全是另一个问题。 – EhevuTov