我来自Java背景,我是一种利用传入数据到node.js服务器的方法:
request.addListener("data", function(postDataChunk) {
postData += postDataChunk;
console.log("Received POST data chunk '"+
postDataChunk + "'.");
});
正如我所见,postData变量总是接收新数据并将其添加到现有数据中。 我的问题是: 每次发生数据事件时都会执行回调函数,但是按照我看到的方式,每次调用函数时,我们实际上都会得到一个新变量“postData”。所以我不明白postData变量每次实际上是多么精确地更新,而不是像普通Java那样被创建为新变量。
感谢。
答案 0 :(得分:2)
如果使用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 + "'.");
});