我正在学习来自其他语言(C#等)的nodejs,并且某些语法已被混淆。
例如这段代码(我相信它很简单,但是希望能得到一个解释,或者至少要有一个指向解释它的文档的链接)
for(var index in files) {
console.log("-->"+index);
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);
}
这是什么var task= (function(file){return function(){......}})(filesDir+.....);
有一个函数正在调用一个函数,突然外面有一些参数(??)?
我猜它正在定义函数列表,但是此语法的规则是什么?
答案 0 :(得分:1)
它称为IIFE(立即调用函数表达式)。基本上,您定义了一个函数
function (){}
并立即执行
(function(){})();
您发布的代码正在执行的是执行一个函数并将返回的值存储在task
中。
希望这会有所帮助。
答案 1 :(得分:0)
那是IIFE(立即调用函数表达式)。基本上,这是一个JavaScript函数,它在定义后立即运行。
(function () {
statements
})();
从 开始mozi//a:- 这是一种设计模式,也称为自执行匿名功能,包含两个主要部分。第一个是匿名函数,其词法范围包含在分组运算符()中。这样可以防止在IIFE习语中访问变量以及污染全局范围。
第二部分创建立即执行的函数表达式(),JavaScript引擎将通过该表达式直接解释该函数。