nodejs, основной вопрос: что это за синтаксис? - PullRequest
0 голосов
/ 12 ноября 2018

Я изучаю nodejs из других языков (C # и т. Д.), И некоторые синтаксисы были сбиты с толку.

Например, этот фрагмент кода (я уверен, что он довольно прост, но был бы признателен за пояснение или хотя бы ссылку на документацию, в которой это объясняется)

 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 голосов
/ 12 ноября 2018

То есть IIFE (выражение для немедленного вызова функции). По сути, это функция JavaScript, которая запускается сразу после ее определения.

(function () {
    statements
})();

Взято справа от mozi // a: - Это шаблон проектирования, который также известен как самоисполняющаяся анонимная функция и состоит из двух основных частей. Первая - это анонимная функция с лексической областью действия, заключенная в оператор группировки (). Это предотвращает доступ к переменным в идиоме IIFE и загрязняет глобальную область.

Вторая часть создает выражение для немедленного выполнения функции (), с помощью которого механизм JavaScript будет напрямую интерпретировать функцию.

0 голосов
/ 12 ноября 2018

Это называется IIFE (выражение для немедленного вызова функции). По сути, вы определяете функцию

function (){}

и немедленно выполните его

(function(){})();

Код, который вы опубликовали, выполняет: выполняет функцию и сохраняет возвращаемое значение в task.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...