Anonymous Function + javaScript
本问题已经有最佳答案,请猛点这里访问。
如何工作?我不明白发生了什么事。我认为这是javascript而不是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | fs.readdir(filesDir, function(err, files) { if (err) throw err; for (var index in files) { **var task = (function(file) {** return function() { fs.readFile(file, function(err, text) { if (err) throw err; countWordsInText(text); checkIfComplete(); }); } **})(filesDir + '/' + files[index]);** tasks.push(task); } for (var task in tasks) { tasks[task](); |
此代码是JS函数的内联执行。可以内联定义和执行每个JS函数:
1 | var result = (function(params) { /* some functionality */ })(params); |
在您的情况下:
1 2 3 4 5 6 7 8 9 | var task = (function(file) { return function() { fs.readFile(file, function(err, text) { if (err) throw err; countWordsInText(text); checkIfComplete(); }); } })(filesDir + '/' + files[index]); |
号
也可以这样写:
1 2 3 4 5 6 7 8 9 10 11 12 13 | // define the funktion var task = function(file) { return function() { fs.readFile(file, function(err, text) { if (err) throw err; countWordsInText(text); checkIfComplete(); }); } }; // execute the function with parameter var result = task(filesDir + '/' + files[index]); |