链接函数参数的方法
在CoffeeScript中链接方法的最佳方法是什么? 例如,如果我有这个JavaScript,我怎么能写在CoffeeScript?
var req = $.get('foo.htm') .success(function( response ){ // do something // ... }) .error(function(){ // do something // ... });
使用最新的CoffeeScript ,以下内容:
req = $.get 'foo.html' .success (response) -> do_something() .error (response) -> do_something()
编译为:
var req; req = $.get('foo.html').success(function(response) { return do_something(); }).error(function(response) { return do_something(); });
您可以采取两种方法:CoffeeScript最好的“字面”翻译(在我看来)
req = $.get('foo.htm') .success((response) -> # do something ) .error( -> # do something )
另一种方法是移动内联函数“outline”,Jeremy Ashkenas(CoffeeScript的创build者)通常倾向于非平凡的函数参数:
onSuccess = (response) -> # doSomething onError = -> # doSomething req = $.get('foo.htm').success(onSuccess).error(onError)
当success
和error
callback是几行时,后一种方法往往更易读; 如果他们只是1-2号,前者是很棒的。
我有时候更喜欢less用括号而不是链接,所以我想修改Trevor的最后一个例子:
req = $.get 'foo.htm' req.success (response) -> # do something req.error -> # do something
从Coffeescript 1.7开始,链接已经大大简化了,你不应该在这里提到任何与parens有关的解决方法。 你上面的例子现在可以写成
req = $.get 'foo.htm' .success ( response ) -> alert "success" .error -> alert "error"
编译到
var req; req = $.get('foo.htm').success(function(response) { return alert("success"); }).error(function() { return alert("error"); });
你可以在这里看到这个和其他CS 1.7function的解释: https : //gist.github.com/aseemk/8637896