【发布时间】:2013-10-29 17:52:56
【问题描述】:
我在从所述模块内部的函数中访问模块级变量的范围时遇到问题。见下文...
var socketio = require('socket.io');
var socket = socketio.listen();
var myCustomModule = require('./lib/mycustommodule')('http://mysite:8080');
socket.on('connection', function connection(socket) {
socket.emit('message', {data:"test1"}); <====THIS WORKS
socket.on('init', function init(data) {
socket.emit('message', {data:"test1"}); <====THIS WORKS
refreshMyCustomModule();
});
});
var refreshMyCustomModule = function() {
socket.emit('message', {data:"test1"}); <=====THIS DOESN'T WORK
myCustomModule.beginSomeAsyncTask(function(data) { <======THIS DOESN'T WORK
socket.emit('message', {data:"test2"}); <========THIS DOESN'T WORK
});
};
查看上面的示例。当我突然调用我的 refreshMyCustomModule 函数时,socket 和 myCustomModule 变得未定义。我也尝试过使用它以及设置var self = this。
我在客户端上用 javascript 编写了一堆代码,但是在 node.js 中编码时,范围似乎不同,我就是无法破解这个问题。
【问题讨论】:
-
范围规则相同。 JavaScript,语言,定义了范围规则。 NodeJS 和浏览器,环境,没有。
标签: javascript node.js scope