callback функция с циклом for внутри

67
10 февраля 2022, 07:10

Есть следующий код, функция для перебора массива и функция для работы с элементом массива -handler4. Которая должна взять строку из массива и сделать из неё новую abc->cba; 123->321 При использовании цикла for в функции handler4 происходит бесконечная итерация, почему так? Если использовать for(i=0;i<strings.length;i++) то нет бесконечного цикла, но выводится только первый элемент массива. Почему так?

let textArray = ["abc", 123]; 
function processArray(array, callback) { 
  let value = "New value: "; 
  for (i = 0; i < array.length; i++) 
    //console.log(i) 
    value += callback(array[i]); 
  return value; 
} 
 function handler4(element) { 
  let backwards = ""; 
  let strings = element.toString(); 
  for (i = strings.length - 1; i >= 0; i--) backwards += strings[i]; 
  console.log(element); 
  return backwards + ", "; 
} 
 
    alert(processArray(textArray,handler4))

Answer 1

У Вас i - одна и та же глобальная переменная. Ее надо объявлять как локальную в каждой функции:

for (var i = 0; i < array.length; i++)
...
for (var i = strings.length - 1; i >= 0; i--) backwards += strings[i];

let textArray = ["abc", 123]; 
 
function processArray(array, callback) { 
  let value = "New value: "; 
  for (var i = 0; i < array.length; i++) 
    //console.log(i) 
    value += callback(array[i]); 
  return value; 
} 
 
function handler4(element) { 
  let backwards = ""; 
  let strings = element.toString(); 
  for (var i = strings.length - 1; i >= 0; i--) backwards += strings[i]; 
  console.log(element); 
  return backwards + ", "; 
} 
 
console.log(processArray(textArray, handler4))

READ ALSO
Как проигнорировать знак - в input number

Как проигнорировать знак - в input number

Есть поле input type="number" и кнопка при нажатию на которую данные с инпута, которые обрабатывает php, уходят в бднужно сделать следующее: чтобы при...

65
Как добавить класс к элементам (JS)

Как добавить класс к элементам (JS)

У меня дана таблица и ссылка, при нажатии на ссылку к таблице добавляется строкаКак к добавляющимся элементам дать класс?

75
Обьекты, созданные через &quot;=&quot; и конструктор - в чем отличия?

Обьекты, созданные через "=" и конструктор - в чем отличия?

) Почему только у обьекта, созданного через конструктор есть контекст? Какие концептуальные разницы между объектом, созданным через =, и обьектом,...

85