2016-09-02 3 views
-1

반환 함수 (object1, object2)의 기능을 이해하지 못했습니다. 어떻게 생성 함수에서 반환 기능을합니까 비교 함수()는 매개 변수를 가져옵니다.?나는 자바 스크립트를 배우고 있으며 함수를 반환하는 함수의 개념에 붙어있다

var data = [{ name: "Zachary", age: 28}, {name: "Nicholas", age: 29}]; 
 

 
function createComparisonFunction(propertyName) 
 
{ 
 
    return function(object1, object2) 
 
    { 
 
    var value1 = object1[ propertyName]; 
 
    var value2 = object2[ propertyName]; 
 
    if (value1 < value2) 
 
    { 
 
     return -1; 
 
    } 
 
    else if (value1 > value2) 
 
    { 
 
     return 1; 
 
    } 
 
    else 
 
    { 
 
     return 0; 
 
    } 
 
    }; 
 
} 
 
data.sort(createComparisonFunction(" name")); 
 
alert(data[ 0]. name); // Nicholas 
 
data.sort(createComparisonFunction(" age")); 
 
alert(data[ 0]. name); // Zachary

+1

"도와주세요"* 어떻게해야합니까? 마주 치게되는 문제는 무엇입니까? – David

+0

나는 그 코드 라인이 무엇을 요구하는지 생각하고있다. 나는 그 해답을 알고 싶어합니다. –

+0

David이 정확히 어떻게 도울 수 있는지 이해하길 바랍니다. –

답변

0

당신은 sort 기능은 아래 코드와 유사하다고 가정 할 수 있습니다. comaprefunction 자체가 createComparisonFunction("name") 같은이기 때문에

function sort(comparefunction) 
{ 
    ... 
    if (comparefunction(obj1, obj2){ 
    // do stuff 
    } 
} 

이제 결국 이런 일이있을 것이다 : createComparisonFunction("name")(obj1, obj2) namecreateComparisonFunction에 대한 입력 및 obj1, obj2은 이름없는 함수에 대한 입력입니다.

0

sort() 메서드는 두 값을 비교할 때 compare 함수에 값을 보내고 반환 된 (음수, 양수, 양수) 값에 따라 값을 정렬합니다.