在下面的代碼中,我試圖讓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