gpt4 book ai didi

javascript - 关于 request.addListener 的回调函数

转载 作者:行者123 更新时间:2023-12-02 18:30:02 24 4
gpt4 key购买 nike

我有 Java 背景,我有一种利用 Node.js 服务器传入数据的方法:

request.addListener("data", function(postDataChunk) {
postData += postDataChunk;
console.log("Received POST data chunk '"+
postDataChunk + "'.");
});

正如我所见,postData 变量总是接收新数据并将其添加到现有数据中。我的问题是:每次发生数据事件时都会执行回调函数,但在我看来,每次调用该函数时,我们实际上都会获得一个新变量“postData”。所以我不明白 postData 变量实际上是如何每次更新的,而不是像在常规 Java 中那样被创建为新变量。

谢谢。

最佳答案

如果您使用 var postData,它将执行与 JAVA 中相同的操作,但这里 postData 是一个会递增的全局变量。在 JavaScript 中,如果您没有显式编写关键字 var,则该变量会在第一次调用时自动实例化,然后像全局变量一样使用。

希望能得到这个问题的答案 question会让事情变得清楚。

示例
你写的基本上是;

request.addListener("data", function(postDataChunk) {
/*"var" omitted in function!
*creates variable "window['postData']"
*unless already created*/
postData += postDataChunk;
console.log("Received POST data chunk '"+
postDataChunk + "'.");
});

使用 var 确定函数的作用域

request.addListener("data", function(postDataChunk) {
//"var" keyword used! variable created in this scope!
var postData += postDataChunk;
console.log("Received POST data chunk '"+
postDataChunk + "'.");
});

关于javascript - 关于 request.addListener 的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17896215/

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