Ehe*_*Tov 1 javascript scope node.js eventemitter
在下面的代码中,我试图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!");
Run Code Online (Sandbox Code Playgroud)
收益:
data!
undefined
Run Code Online (Sandbox Code Playgroud)
我希望它能回归:
data!
my data!
Run Code Online (Sandbox Code Playgroud)
该参数mydata在回调的参数列表隐藏着同一个名字的全局变量.
当你在那个位置没有传递参数时,它的值是undefined.
或者:
myevent.emit('data', "data!", mydata);PS:
myevent.on('data', function(data, mydata) {myfunc(data,mydata)});
Run Code Online (Sandbox Code Playgroud)
会写得更好:
myevent.on('data', myfunc);
Run Code Online (Sandbox Code Playgroud)