Я видел слайд, который представлял Fab, фреймворк node.js.
Является ли этот JavaScript?
Может кто-нибудь объяснить, что происходит в этом коде?
Я потерялся.
Я видел слайд, который представлял Fab, фреймворк node.js.
Является ли этот JavaScript?
Может кто-нибудь объяснить, что происходит в этом коде?
Я потерялся.
Является простым 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!
Это действительно трудно. он вообще не похож на 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