2012-06-23 3 views
2

다른 함수에 함수를 전달하고 싶습니다. 함수 호출은 위임자라고 할 수 있습니까? 나는 이런 종류의 온라인에 대해 좋은 설명을 찾는 데 어려움을 겪고있다. 이것을하는 것이 올바른 방법일까요? 전화의 물건을 work..rest합니다함수 (위임?)를 매개 변수로 자바 스크립트의 다른 함수에 전달한 다음 사용하십시오.

function getCellContentByColumnIndex = function(row, index) { 
    return $(row.children().get(index)).text(); 
} 
function naturalSort(a, b, func) { 
    //... 
    var $a = func(a); 
    var $b = func(b); 
    //... 
} 

//usage 
naturalSort(x, y, getCellContentByColumnIndex); 

답변

5

에 코드를 통과 부름받은 것이다 경우 :

function getCellContentByColumnIndex = function(row, index) { 
    return $(row.children().get(index)).text(); 
} 

구문 오류입니까? 다음은 함수 선언이다 :

functon foo() {} 

그리고이 함수 식입니다

var foo = function(){} 

그리고이 명명 된 함수 표현식된다

var foo = function bar(){} 

여기에 대한 답변을 제공하고 있습니다 차이점에는 함수 선언 및 표현의 많은 다른 측면을 다루는 문서 Named function expressions demystified에 대한 자세한 설명이 있습니다.

"익명 함수"라는 용어는 이름이없고 아무 것도 할당되지 않은 함수 표현식에 대한 특수 용어입니다 (예 :.

someFn(function(){...}) 

someFn가 호출에 이름이없는 함수 전달된다. someFn에 이름이 지정 될 수도 있고 할당되지 않을 수도 있습니다. IC는 arguments[0]으로 참조 될 수 있습니다.

함수를 전달하는 것은 상위 요소에 수신기를 배치하고 버블 링 이벤트를 포착하는 실습을위한 전문 용어가 아니며 테이블의 모든 셀에 대한 클릭 수신기를 대체 할 수있는 경우에 바람직합니다. 테이블상의 단일 청취자.

어쨌든, 기능을 전달하는 것은 다른 모든 객체를 전달 같다 : 위에서

function foo(){ 
    alert('foo'); 
} 

function callIt(fn) { 
    fn(); 
} 

callIt(foo); // 'foo' 

foocallIt에 전달 로컬 변수 fn 할당하고 호출한다.

2

익명 기능 ..

var getCellContentByColumnIndex = function(row, index) { 
    return $(row.children().get(index)).text(); 
} 

코드에서 이미 완벽 .. :)

2

당신과 같이 변수로 주위에 기능을 전달합니다

var getCellContentByColumnIndex = function(row, index) { 
    return $(row.children().get(index)).text(); 
} 

function naturalSort(a, b, func) { 
    //... 
    var $a = func(a); 
    var $b = func(b); 
    //... 
} 

//usage 
naturalSort(x, y, getCellContentByColumnIndex); 

익명 함수를 사용하여 호출됩니다.

+2

함수 표현식을 변수에 지정하는 예제입니다. 선언으로 쓰는 것이 더 낫겠지 만 여기서 표현을 사용하면 아무런 이점이 없습니다. – RobG

+0

@RobG가 올바른지 확인하십시오.이 기능을 사용해야하는 이유가 있는지 확인하십시오. 그렇지 않으면 간단하게 기능을 선언하는 것이 더 깔끔합니다. –

1

JavaScript에서는 함수가 일급 시민으로 취급되므로 간단한 변수를 여기 저기에 넣을 수 있습니다. 핵심은 함수를 참조하고 FunctionName()을 사용하여 함수를 호출하려는 경우 FunctionName을 사용하는 것입니다.

이 라인 : naturalSort(x, y, getCellContentByColumnIndex);

naturalSort(x, y, function(){ 
    return $(row.children().get(index)).text(); 
}); 

로 기록 된 수는 익명 기능

관련 문제