0

私はJavaのバックグラウンドから来ており、node.jsサーバーへの受信データを利用する方法を知っています:

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

私が見たように、postData 変数は常に新しいデータを受け取り、それを既存のデータに追加します。私の質問は: データ イベントが発生するたびにコールバック関数が実行されますが、関数が呼び出されるたびに、実際には新しい変数「postData」を取得しています。そのため、postData変数が実際に毎回更新され、通常のJavaのように新しい変数として作成されていないことが正確にわかりません。

ありがとう。

4

1 に答える 1

2

var を使用するpostDataと、JAVA と同じように動作しますpostDataが、インクリメントされるグローバル変数を次に示します。JavaScript では、キーワード を明示的に記述しない場合var、変数は最初の呼び出しで自動的にインスタンス化され、グローバル変数であるかのように使用されます。

うまくいけば、この質問に対する答えが物事を明確にするでしょう.


あなたが書いたものは本質的に次のとおりです。

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 + "'.");
});
于 2013-07-27T09:21:50.493 に答える