JavaScript中具有多个参数的函数

JavaScript中具有多个参数的函数,javascript,Javascript,我刚刚接受了这个测试 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 d

我刚刚接受了这个测试

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时的代码中可以看出,它有许多不同的参数,具有不同的and[]。这真让我困惑。有人能给我解释一下为什么这个函数可以有很多参数和很多括号吗


感谢您的帮助

函数可以返回任何内容,例如对象或其他函数。例如:

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()()()();

最多只传递一个参数

它实际上是通过让一个函数返回另一个函数来链接不同的函数

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']

是的,我还需要一些解释。我知道这是用于可调用对象,[]是用于对象文字,但我以前没有看到两个括号一起出现。该函数不是用多个参数调用的。。。。正在发生的事情是调用函数来重新调用函数等等。[…]依次是引用var obj={a:1}的对象键;obj[a]/=>1。