gpt4 book ai didi

node.js - Node JS 变量范围

转载 作者:太空宇宙 更新时间:2023-11-03 22:38:56 24 4
gpt4 key购买 nike

我有下一段代码

function Server() {

function eventHandler(data) {
console.log('DATA ' + this.server.socket.remoteAddress + ': ' + data);
socket.write('You said "' + data + '"');
}

function connectionHandler(socket) {
console.log('server connected');
console.log('CONNECTED: ' + socket.remoteAddress +':'+ socket.remotePort);
socket.on('data', eventHandler);
}

this.server = net.createServer(connectionHandler);

this.port = undefined;

this.startServer = function(port) { //Maybe change backlog for security reasons
this.port = port;
this.server.listen(port, function() { //'listening' listener add handle object here
console.log('server bound');});
}
}

每次建立连接时我都会得到

server bound
server connected
CONNECTED: 132.65.16.64:55028

/a/fr-05/vol/netforce/stud/yotamoo/ex4/myHTTP.js:7
console.log('DATA ' + this.server.socket.remoteAddress + ': ' + data);
^
TypeError: Cannot read property 'remoteAddress' of undefined
at Socket.eventHandler (/a/fr-05/vol/netforce/stud/yotamoo/ex4/myHTTP.js:7:43)
at Socket.emit (events.js:67:17)
at TCP.onread (net.js:329:14)

这当然与evenHandler()有关。我不明白 Node JS 中如何创建对象及其范围。例如,socketdata 在哪里创建的?他们的范围是什么?

非常感谢

最佳答案

这表示当前调用的函数。

在您的情况下,这指的是 eventHandler 并且 eventHandler 仅将数据作为可访问值。

如果您尝试访问套接字,您将得到像您一样的异常。因为套接字不在该函数范围内。

套接字和数据都来自异步回调,这是 Node.js 的主要模式。

关于node.js - Node JS 变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13746989/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com