что аргумент в анонимной функции представляет в именованной функции?

#javascript #anonymous-function

#javascript #anonymous-функция

Вопрос:

Эмм, я изо всех сил пытался объяснить, в чем моя проблема, извините за плохой английский. В приведенном ниже коде:

     function createCompareFunction(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;
       }

    };


}

var person = [{name: "Nicholas", age: 29}, {name: "Alex", age: 34}];
person.sort(createCompareFunction("name"));
alert(person[0].name);
  

как вы можете видеть в этой области:

  return function(object1, object2){
   var value1 = object1[propertyName];
   var value2 = object2[propertyName];
  

есть аргументы object1 и object2
но, когда я вызываю функцию, я не определил аргументы, но почему она автоматически знает, что это объект в массиве.

Надеюсь, вы понимаете, о чем я говорю. Спасибо!!

Ответ №1:

Смотрите спецификацию для сортировки. Он сообщает вам, какие аргументы он передает при вызове функции, которую вы ему передаете (это два элемента в массиве, которые он в данный момент сортирует).