私は要求を解析するformidableフォームを持っています。その後、このリクエストとともにファイルがアップロードされます。formidableには、ファイルがある場合にイベントを聴くことができます。Javascript:コールバック関数でローカル変数にアクセスするには?
var form = new formidable.IncomingForm({
uploadDir: __dirname + '/temp',
keepExtensions: true
});
私はイベントに耳を傾けるだろうここでは私の最初のコードは、コールバック関数の連鎖だった、それは私がどここのアプローチに切り替えて読み、維持するために、ハードのようなものだ
form.on('file', function(name, file){
var file = file;
fs.readFile(file.path, readFileCallback);
});
function readFileCallback(err, contents){
console.log(file);
if (err) throw err;
....
}
です私は外にアクセスすることができ、この種のアプローチで
form.on('file', function(name, file){
fs.readFile(file.path, function(err, contents){
console.log(file);
if (err) throw err;
....
});
});
:私の代わりにこのようにコールバックとして、それを呼び出して関数を宣言するだろう変数はfile
です。私は外部変数にアクセスする際に2つの違いが何であるか疑問に思っています。前もって感謝します。
最初は親関数のスコープ内で定義されているので、関数を囲む関数のローカル変数にアクセスできます。 2番目は外に定義され、囲まれていません。 – gurvinder372
密接に関連しています:[* JavaScriptのクロージャはどのように機能しますか?*](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work?rq=1) –