如何将javascript剪切转换为coffeescript

时间:2013-01-22 21:34:43

标签: javascript coffeescript

//Trying to convert zis javascript...
http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

//To zis coffee-script
http.createServer(app).listen app.get('port'), (x) ->
  console.log "Express server listening on port " + app.get 'port'

我的问题是:当我提供app.get('port')的值作为“listen”的第一个参数时,是否必须使用括号 如果我在不使用括号的情况下编写代码段:

http.createServer(app).listen app.get'port' (x) ->
      console.log "Express server listening on port " + app.get 'port'

不会将回调函数作为第二个参数传递给app.get?

1 个答案:

答案 0 :(得分:2)

简而言之,转换看起来像这样:

http.createServer(app).listen app.get('port'), ->
    console.log "Express server listening on port #{app.get 'port'}"

更多解释:

除非函数不带参数,否则CoffeeScript的括号是可选的。因此,如果您正在调用带有两个参数的函数,则以下两个是等效的:

Math.max(5, 12)
Math.max 5, 12

Math.max一样,http.createServer(app).listen似乎有两个参数:一个端口(似乎)和一个回调函数。

你可以像这样轻松地写出来,这可能会更清楚。

serverListeningCallback = ->
    console.log "Express server listening on port #{app.get 'port'}"

http.createServer(app).listen app.get('port'), serverListeningCallback

我建议在顶部使用解决方案,但上述方法可能会使解决方案更加清晰。


PS:注意CoffeeScript's string interpolation。以下内容在CoffeeScript中是等效的:

"My favorite number is " + Math.random()
"My favorite number is #{Math.random}"