답변:
콜백이 함수의 마지막 인수로 오는 것이 유용한 규칙이라고 생각합니다. 예를 들어 Node.js API의 경우가 일반적입니다. 그래서 그것을 염두에두고 :
delay = (ms, func) -> setTimeout func, ms
delay 1000, -> something param
물론, 이것은 모든 함수에 여분의 함수 호출의 오버 헤드를 추가합니다 setTimeout
. 그러나 오늘날 JS 인터프리터에서는 초당 수천 번 수행하지 않는 한 성능 저하가 중요하지 않습니다. (그리고 어쨌든 초당 수천 개의 타임 아웃을 설정하고 있습니까?)
물론보다 간단한 접근 방식은 콜백 이름을 지정하는 것입니다. 어쨌든 더 읽기 쉬운 코드를 생성하는 경향이 있습니다 (jashkenas는이 관용구의 큰 팬입니다).
callback = -> something param
setTimeout callback, 1000
setTimeout ( ->
something param
), 1000
괄호는 선택 사항이지만 쉼표로 줄을 시작하면 지저분 해 보입니다.
setTimeout
와 간격 이 중요 하다는 점에 유의하십시오 . 공백은 괄호가 setTimeout의 첫 번째 매개 변수로 클로저를 둘러싸고 있음을 의미합니다. 그것이 t 바로 뒤에 있다면 coffescript는 괄호가 두 매개 변수를 묶을 것으로 기대합니다.
setTimeout ->
something param
, 1000
something param
와 같은 줄에 있으면 setTimeout
다르게 구문 분석됩니다.
이렇게하면 거의 비슷한 번역이됩니다 (@Joel Mueller 덕분에).
setTimeout (-> something param), 1000
익명 함수는 something(param)
스 니펫에서와 같이 정의되지 않은 대신 호출 결과를 반환하기 때문에 정확한 번역이 아닙니다 .
setTimeout (() -> something param), 1000
나는 이것이 최선의 방법이라고 생각합니다.
setTimeout (-> alert "hi"), 1000