匿名函数+ javaScript

时间:2013-11-10 10:03:54

标签: javascript

它是如何工作的? function(){...}();我无法理解发生了什么。我认为这不是javascript node.js拼图。但我找不到解决方案。

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]();

1 个答案:

答案 0 :(得分:1)

此代码是js函数的内联执行。每个js函数都可以内联定义和执行:

var result = (function(params) { /* some functionality */ })(params);

在你的情况下:

 var task = (function(file) {
            return function() {
                fs.readFile(file, function(err, text) {
                    if (err) throw err;
                    countWordsInText(text);
                    checkIfComplete();
                });
            }
        })(filesDir + '/' + files[index]);

也可以写成:

// 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]);