我刚收到这个测试
function darling(w) {
/**
* your code here
*/
}
/**
* test functions, those in comment are expected returned value
*/
var demoIsWorking = demo();
var absolutely = darling('w')('i')('l')('l')['y']['o']['u'].m.a.r.r.y('m').e['?'];
var definitely = darling('w')('o')('u')('l')('d')['y']['o']['u'].m.a.r.r.y('m').e['?'];
var rUKidding = darling('w')('i')('l')('l')['y']['o']['u'].m.a.r.r.y('h').im['?'];
var yNot = darling('w')('o')('u')('l')('d')['y']['o']['u'].m.a.r.r.y('h').im['?'];
正如您在程序调用函数darling时从代码中看到的那样,它有许多不同的参数,带有不同的()和[]。这真让我感到困惑。有人可以为我解释为什么函数可能有很多参数,也有很多括号。
感谢您的帮助
答案 0 :(得分:0)
函数可以返回任何内容,例如对象或其他函数。例如:
function matchesYou() {
return { y: { o: { u: true } } };
}
使以下成为可能:
matchesYou().y.o.u;
你也可以写成:
matchesYou()['y']['o']['u'];
或两者的任意组合。
对于圆括号,它甚至更简单:
function darling(w) {
return function(iOrU) {
return function(lOrU) {
return function(l) {
return true;
};
};
};
}
您可以这样称呼:
darling('w')('i')('l')('l');
或者像这样,没关系:
darling()()()();
答案 1 :(得分:0)
最多只传递一个参数。
它正在做的是通过让一个函数返回另一个函数来实际链接不同的函数。
function someFunction(w) {
switch(w): {
case 'a':
return function() { ... }
case 'b':
return function() { ... }
}
}
调用someFunction
可能会返回一个完全不同的函数,具体取决于传递的参数。
在这些函数中的某个地方,它返回数组中的数组
[
['a','b','c'],
['a','b','c'],
['a','b','c'],
];
其中一些包含对象
[{a:'1',b:'2' ....}], 'b']