이것을 coffeescript로 작성하는 방법?
f = (function(){
// something
})();
팁 주셔서 감사합니다 :)
이것을 coffeescript로 작성하는 방법?
f = (function(){
// something
})();
팁 주셔서 감사합니다 :)
답변:
괄호 만 사용할 수 있지만 (예 :) 키워드 (-> foo)()
를 사용하여 피할 수 있습니다 do
.
do f = -> console.log 'this runs right away'
가장 일반적인 용도 do
는 루프에서 변수를 캡처하는 것입니다. 예를 들어
for x in [1..3]
do (x) ->
setTimeout (-> console.log x), 1
이 없으면 루프 이후의 do
값을 x
3 번 인쇄합니다 .
-> console.log 'this runs right away'
를에 할당 f
한 다음 실행합니다. 당신은 f
원래 질문에서 와 같이 함수를 실행 한 다음 그 결과를에 할당합니다 . (의 경우 console.log
반환 값은 항상 undefined
어쨌든입니다.)
{f: do -> // something}
do
함수에 인수를 전달할 수도 있습니다. 전달하려면 1
및 2
매개 변수 x
로 y
를 작성하십시오 do (x = 1, y = 2) ->
. (이 기능에 대한 문서가있다 손실 쪘 지만, 이 기능이 도입 된 문제는 몇 가지 예제가 있습니다.)
CoffeeScript의 자체 호출 함수에 전달 된 인수를 "별칭"하고 싶다면 다음과 같이 달성하려고합니다.
(function ( global, doc ) {
// your code in local scope goes here
})( window, document );
그럼 do (window, document) ->
그렇게 놔두지 않을 것입니다. 갈 방법은 괄호를 사용하는 것입니다.
(( global, doc ) ->
# your code here
)( window, document )
do (global=window, doc=document) ->
또한 do
키워드를 기본 함수 매개 변수와 결합하여 재귀 "자체 시작 함수"를 초기 값으로 시드 할 수 있습니다 . 예:
do recursivelyPrint = (a=0) ->
console.log a
setTimeout (-> recursivelyPrint a + 1), 1000
do ->
#your stuff here
이것은 범위 지정에 유용한 자체 실행 클로저를 생성합니다.
죄송합니다. 해결했습니다.
f = (
() -> "something"
)()
do
키워드가 필요 때로는 JS 스타일의 접근 방식을 사용할 수 있도록 몇 가지 제한 사항이 있습니다 (참조 문제 960 ); do
실제로 폐쇄 형 루프 사용 사례 때문에 추가되었습니다.
그것은해야한다
f = () ->
# do something
f = do -> console.log x