Функция, вызываемая с другой функцией в качестве параметра, не может полностью понять ее

Нет, порядок свойств объектов не гарантируется в JavaScript; вам нужно использовать Array.

Определение объекта из ECMAScript Third Edition (pdf) :

4.3.3 Объект

Объект является членом типа Object. Это неупорядоченный набор свойств, каждый из которых содержит примитивное значение, объект или функцию. Функция, хранящаяся в свойстве объекта, называется методом.

Поскольку ECMAScript 2015, использование объекта Map может быть альтернативой. A Map разделяет некоторые сходства с Object и гарантирует порядок ключей :

Карта выполняет итерацию своих элементов в порядке размещения, тогда как порядок итерации не указан для объектов.

1
задан awoldt 28 February 2019 в 22:00
поделиться

2 ответа

В вашем фрагменте кода p более или менее является функцией обратного вызова. Обратный вызов - это функция, которая должна выполняться после завершения выполнения другой функции.

В вашем случае вы создаете другую функцию, в которой используется ваш p.

Вы можете увидеть это, просто войдя в свой p var. p - это функция (обратный вызов) в вашем коде, поэтому вы должны увидеть, что функция выводится.

repeat = (n, action) => {
     console.log("Action: ", action);
     for(i=1; i<=n; ++i) {
          action(i);
     }
}


let test_array = [];
repeat(5, p => {
    test_array.push(p);
})

Ваш код такой же, как:

repeat = (n, action) => {
     for(i=1; i<=n; ++i) {
     console.log(action);
          action(i);
     }
}


let test_array = [];
repeat(5, function(i) {
    test_array.push(i);
})
     
     
console.log(test_array);

См .: https://developer.mozilla.org/en-US/docs/Glossary/Callback_function

0
ответ дан basic 28 February 2019 в 22:00
поделиться

p используется в качестве параметра для анонимной функции, которую вы предоставляете repeat(). (Ознакомьтесь с обзором MDN функций в JavaScript )

Вы можете так же легко назначить неанонимную (т. Е. Именованную) функцию для вызова repeat, как функции являются первоклассными в JavaScript

function foo(i) {
  test_array.push(i);
}

repeat(5, foo); // => test_array now holds [1, 2, 3, 4, 5] just like before
0
ответ дан jakemingolla 28 February 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: