CoffeeScript,传递多个参数,包括匿名函数。

6

我不确定如何用计算机科学的专业术语来表达这个问题,希望有人能帮忙:

FB.getLoginStatus(function (response) {} , {scope : scope})

thanks.


我什么都没试过...我已经没有主意了,伙计.. :P - d4rklit3
http://stackoverflow.com/questions/6720402/in-coffeescript-how-can-you-make-a-function-call-with-anonymous-functions-as-pa - Matt Ball
@d4rklit3,如果我是你,我会先放下Coffeescript一段时间,试着先好好掌握JavaScript。 - Ricardo Tomasi
可能是重复的问题:如何在CoffeScript中传递两个匿名函数作为参数? - mu is too short
@RicardoTomasi,我看了你的评论。我不同意你的观点。也许你应该更加圆滑一些。这只是给你的友好现实世界建议,伙计。 - d4rklit3
3个回答

10

您可以这样编写一些CoffeeScript代码...

FB.getLoginStatus(
  (response) -> 
    doSomething()
  {scope: scope})

这将转换为以下JavaScript代码...

FB.getLoginStatus(function(response) {
  return doSomething();
}, {
  scope: scope
});

9
很抱歉,我的快速样本未能满足您对完美的要求。 - scottheckel
1
你已经被原谅了。FB.getLoginStatus receiveLogin, { scope } - Ricardo Tomasi

4
FB.getLoginStatus(function(response) {}, {
  scope: scope
});

JavaScript中的意思是:

FB.getLoginStatus(
  (response) ->
  { scope }
)

在CoffeeScript中。
进一步回答你有关多个参数的问题,请看以下示例:
$('.main li').hover(
  -> $(@).find('span').show()   
  -> $(@).find('span').hide()
)

在 CoffeeScript 中等于:

$('.main li').hover(function() {
  return $(this).find('span').show();
}, function() {
  return $(this).find('span').hide();
});

在 JavaScript 中。

关于处理多个参数的一个更简单的例子(不使用匿名函数)是:

hello = (firstName, lastName) ->
  console.log "Hello #{firstName} #{lastName}"

hello "Coffee", "Script"

在 CoffeeScript 中编译后的结果是:

var hello;

hello = function(firstName, lastName) {
  return console.log("Hello " + firstName + " " + lastName);
};

hello("Coffee", "Script");

在JavaScript中。

0

另一个选项:

FB.getLoginStatus(((response) ->),{scope})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接