CoffeeScript用于另一个函数的多个函数参数

时间:2014-11-23 20:12:16

标签: javascript function coffeescript

如何使用CoffeeScript调用多个函数作为参数的函数?例如,如果我想编译为此JavaScript

outerFunction(function(innerFunction1) {
        console.log('argument 1');
    },
    function(innerFunction2) {
        console.log('argument 2');
    },
    argument3
);

我会使用哪些CoffeeScript代码?假设2个空格的缩进,即使我使用4来使其在StackOverflow上看起来更好。说实话,让JavaScript缩进正确也很难。无论如何,我试过了

outerFunction (innerFunction1) ->
    console.log 'argument 1'
(innerFunction2) ->
    console.log 'argument 2'
argument3

但结果JavaScript innerFunction2outerFunction处于同一级别,而不是孩子。使用逗号似乎也没有帮助。将这两个函数放在同一行上:

outerFunction (innerFunction1) ->
        console.log 'argument 1', (innerFunction2) ->
        console.log 'argument2,
    argument3

存在相反的问题:innerFunction2成为innerFunction1的孩子。

所以如何让多个函数成为CoffeeScript中单个函数的参数?

2 个答案:

答案 0 :(得分:2)

这是你想要的:

outerFunction (innerFunction1) ->
  console.log 'argument 1'
, (innerFunction2) ->
  console.log 'argument 2'
, argument3

不幸的是,您无法使用逗号或括号在CoffeeScript中编写它:

outerFunction(
  (innerFunction1) ->
    console.log 'argument 1'
  (innerFunction2) ->
    console.log 'argument 2'
  argument3
)

除非您的第一个参数不是匿名函数

outerFunction argument1,
  (innerFunction2) ->
    console.log 'argument 2'
  (innerFunction3) ->
    console.log 'argument 3'
  argument4

答案 1 :(得分:1)

我怀疑你是在用凹痕混合空格,或者你的缩进已经关闭了。因为你发布的CoffeeScript变得很精致。

outerFunction ->
    innerFunction1 ->
        console.log 'argument 1'
    innerFunction2 ->
        console.log 'argument 2'
    argument3

编译为:

outerFunction(function() {
  innerFunction1(function() {
    return console.log('argument 1');
  });
  innerFunction2(function() {
    return console.log('argument 2');
  });
  return argument3;
});

它也很难知道你想要什么,因为你的例子:

outerFunction(function() {
    innerFunction1() {
        console.log('argument 1');
    },
    innerFunction2() {
        console.log('argument 2');
    },
    argument3
);

无效的JavaScript

15个警告

  • 2缺少分号。
  • 4预期标识符,而是看到','。
  • 4预期分配或函数调用,而是看到一个表达式。
  • 4缺少分号。
  • 5缺少分号。
  • 7预期标识符,而是看到','。
  • 7预期分配或函数调用,而是看到一个表达式。
  • 7缺少分号。
  • 8预期分配或函数调用,而是看到一个表达式。
  • 8缺少分号。
  • 9预期标识符,而是看到')'。
  • 9预期分配或函数调用,而是看到一个表达式。
  • 1无与伦比的' {'。
  • 9预期')'而是看到''
  • 9缺少分号。

四个未定义的变量

  • 1 outerFunction
  • 2 innerFunction1
  • 5 innerFunction2
  • 8 argument3