2013-01-22 12 views
1
//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(「端口」)使用括號的作爲第一個參數值設置爲‘聽’ 如果我寫的不使用括號的片段:如何轉換的JavaScript剪斷到CoffeeScript的

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

不會將回調函數作爲第二個參數傳遞給app.get?

+1

爲什麼你不試試看? –

+5

僅僅因爲你經常*可以*調用沒有括號的函數,這並不意味着你*應該*。當像這樣鏈接函數調用時,即使優先級是你想要的,你也應該使用圓括號。 –

+1

爲什麼不只是看看生成的JavaScript?你會得到你的答案。 – mpm

回答

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.maxhttp.createServer(app).listen似乎需要兩個參數:一個端口(似乎)和一個回調函數。

你可以像這樣寫出來,這可能會更清楚。

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

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

我建議頂部的解決方案,但上述可能會使解決方案更清晰。


PS:Note CoffeeScript's string interpolation。 CoffeeScript中的以下內容相當:

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