2013-06-13 4 views
1

내가이 작업이 어떻게 서명선택적 인수

some_fn arg1, arg2, [optional], cb

과 기능을보고 된 기능?

CSTE 연구진 (이벤트 [선택] [데이터], 핸들러 (eventObject)가)

방법 :

+0

http://jsfiddle.net/ambiguous/c6UwC/

더 커피 스크립트 틱 버전 대신 직접 arguments 처리의 ...을 사용 예를 들어

어디 있니? 너 봤어? 일반적으로 선택적 인수는 끝에 있습니다. – Niko

+0

이 예에서는 어떤 매개 변수가 선택적이어야하며 어떤 매개 변수는 필수 매개 변수 여야합니까? –

답변

2

jQuery를 그 물건의 종류의 모든 시간, on for example을한다 내부 선택 인수와 최종 인수는 서로 다른 형식을 가지므로 함수는 typeof (또는 비슷하지만 비슷하지만 유사한 다양한 검사 인 is* functions in Underscore과 같은 수표)을 사용하여 arguments을 손으로 구문 분석하여 호출 방법을 파악할 수 있습니다. 동일한 유형의 가능한 인수 목록에 여러 항목이있는 경우 길이 확인을 시도하여 의도가 무엇인지 파악하십시오.

f =() -> 
    args = Array::slice.apply(arguments) 
    if(typeof args[0] == 'function') 
     args[0]() 
    else 
     console.log("#{args[0]} is not a function") 

f(1, 2, 3) 
f(-> console.log('pancakes')) 

데모 :

f = (args...) -> 
    if(typeof args[0] == 'function') 
     args[0]() 
    else 
     console.log("#{args[0]} is not a function") 

데모 : http://jsfiddle.net/ambiguous/gPmJZ/

+0

스 플랫의 흥미로운 사용 – Alexis

+0

http://stackoverflow.com/questions/6201657/what-does-splats-mean-in-the-coffeescript-tutorial – Alexis

+1

@Alexis :이 인수 형식을 사용하는 이유는 무엇입니까? 인수 목록의 중간에있는 익명의 함수는 꽤 못 생기고 시각적으로 혼란 스럽습니다 (예'setTimeout'과'setInterval')하지만 그 서명은 (IMO) 실수이고 많은 지독한 코드로 이어집니다. –