2012-08-08 19 views

Odpowiedz

20
do (a = 'hello') -> 
    console.log a 

Will generate dokładnie, co chcesz.

Chociaż muszę przyznać, że nie widzę sensu tego. Jeśli naprawdę chcesz, aby a wziął literalną wartość 'hello' w tym zakresie, to po co robić inny zakres? Z a jako normalną zmienną zadeklarowaną jako a = 'hello' wystarczy. Teraz, jeśli chcesz zastąpić a wartością innej zmiennej (która może się zmienić w pętli lub coś podobnego) i zrobić do (a = b) ->, to myślę, że to ma więcej sensu, ale możesz łatwo zrobić do (a) -> i po prostu użyć a zamiast b wewnątrz Zakres do.

+9

'do ($ = jQuery) ->' jest przypadkiem użycia commom –

+0

dobrze jest użyć wewnętrznej pętli, która tworzy wiele zamknięć, tak że każda iteracja pętli (każde zamknięcie) ma swoją własną zmienną. –

2

do jest specjalnym kluczowe w coffeescript. Tworzy zamknięcie. Myślę, że chcesz coś takiego:

log = (msg) -> 
    console.log msg 

kompiluje do:

var log; 

log = function(msg) { 
    return console.log(msg); 
}; 

używać go jak każdej innej funkcji: log("hello")

2

można zrobić to

do (a = "foo")-> 
    console.log a 

Ale tak naprawdę, dlaczego chcesz to zrobić? Co jest bardziej kompletny przypadek użycia staramy się realizować

+2

Czysto rozumieć CoffeeScript lepiej. Dziękuję za odpowiedź! – chenglou

3

Jeśli używasz Module Pattern ta jest przydatna do korzystania z $ globalne przy użyciu wielu bibliotek JavaScript, które mogą być sprzeczne ze sobą:

mySingleton = do ($ = jQuery) -> 
    colorIt -> $('.colorme').css('backgroundColor', 'red') 

mySingleton.colorIt() 
Powiązane problemy