如何使用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
innerFunction2
与outerFunction
处于同一级别,而不是孩子。使用逗号似乎也没有帮助。将这两个函数放在同一行上:
outerFunction (innerFunction1) ->
console.log 'argument 1', (innerFunction2) ->
console.log 'argument2,
argument3
存在相反的问题:innerFunction2
成为innerFunction1
的孩子。
所以如何让多个函数成为CoffeeScript
中单个函数的参数?
答案 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个警告
四个未定义的变量