2014-11-23 44 views
0

如何使用CoffeeScript来调用具有多个函数作为参数的函数?例如,如果我想编译这个JavaScriptCoffeeScript用于将多个函数参数转换为另一个函数

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 

但由此产生的JavaScriptinnerFunction2处于同一水平outerFunction,而不是作为一个孩子。使用逗号也没有帮助。有在同一条线上两个函数是这样的:

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

有相反的问题:innerFunction2成为innerFunction1一个孩子。

因此如何让多个函数成为单个函数的参数CoffeeScript

+0

我没有第一个参数没有看到这个问题,可能是因为我没有把它们想象成“匿名函数”。无论如何,没有冒犯,但这不是一个很好的问题,也没有很多好的答案。 – trysis 2014-11-23 22:42:46

回答

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 
+0

谢谢。我不喜欢用逗号编程,但是如果我想继续写'CoffeeScript',我想我必须习惯它。 – trysis 2014-11-23 21:43:09

1

我怀疑你是用缩进来混合空格,或者你的缩进是关闭的。因为你发布的CoffeeScript变成了很好的JavaScript。

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参数3
+0

你说得对,我试图使用的JavaScript与问题中的不同。我纠正了它,但我可能需要再调整一下。 – trysis 2014-11-23 20:41:34

+0

我的JavaScript也不完美,但是你的短信有一些误报。我的JavaScript可能会混淆它。 – trysis 2014-11-23 20:46:36

相关问题