nodejs,基本问题:这是什么语法?

时间:2018-11-12 10:30:11

标签: node.js syntax

我正在学习来自其他语言(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+.....);

有一个函数正在调用一个函数,突然外面有一些参数(??)?

我猜它正在定义函数列表,但是此语法的规则是什么?

2 个答案:

答案 0 :(得分:1)

它称为IIFE(立即调用函数表达式)。基本上,您定义了一个函数

function (){}

并立即执行

(function(){})();

您发布的代码正在执行的是执行一个函数并将返回的值存储在task中。

希望这会有所帮助。

答案 1 :(得分:0)

那是IIFE(立即调用函数表达式)。基本上,这是一个JavaScript函数,它在定义后立即运行。

(function () {
    statements
})();

开始mozi//a:- 这是一种设计模式,也称为自执行匿名功能,包含两个主要部分。第一个是匿名函数,其词法范围包含在分组运算符()中。这样可以防止在IIFE习语中访问变量以及污染全局范围。

第二部分创建立即执行的函数表达式(),JavaScript引擎将通过该表达式直接解释该函数。