Javascript FAB framework на Node.js

Я видел слайд, который представлял Fab, фреймворк node.js.

Fab slide

Является ли этот JavaScript?

Может кто-нибудь объяснить, что происходит в этом коде?

Я потерялся.

Ответ 1

Является простым JavaScript, это шаблон цепочки функций.

Первая строка, ( fab = require("fab") ) включает в себя функцию fab и возвращает ссылку на нее.

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

Образец, вероятно, выглядит следующим образом:

var foo = function (arg) {
  // detect what the argument is
  if (typeof arg == 'function') {
    // do something with arg
    console.log('function: '+arg());
  } else if (arg instanceof RegExp) {
    // arg is a RegExp...
    console.log('A RegExp: '+arg);
  } else if (typeof arg == "string") {
    // arg is a string
    console.log('A string: '+arg);
  }
  return foo; // return a reference to itself
};

(foo)
  (function() { return "Foo "; })
  (/bar/)
  (" baz!");

Выходы:

function: Foo
A RegExp: /bar/
A string: baz!

Ответ 2

Это действительно трудно. он вообще не похож на Javascript...

В любом случае, FAB использует возможность возврата указателя на вызываемую функцию. Например:

function doSomething(str){
  alert(str);
  return arguments.callee;
}

// Alerts 'hi' and then 'there'
doSomething('hi')('there');

Конечно, вы можете реализовать дополнительные условия, такие как подсчет количества аргументов или проверка типа переданных аргументов. Например:

function doSomething(){
  if(arguments.length == 1){
    alert(arguments[0])
  } 
  else if(arguments.length == 2){
    alert(arguments[0] + arguments[1]);
  }

  return arguments.callee;
}

doSomething
  ("Hi, 3 + 4 is:")
  (3, 4);

Последний пример предупреждает:

> Hi, 3 + 4 is:
> 7