Почему падает браузер?

132
30 января 2021, 04:40

Почему при написании этого кода в консоль у меня падает браузер?

function duplicate(a)
{
if(Array.isArray(a)){
    for(var i=0;i<a.length;i++)
        {
            a.push(a[i]);
        }
    }
return a;
};
duplicate([1,2,3,4,5])
Answer 1

Потому что длина массива увеличивается с каждым выполнением push, а значит цикл бесконечный. Ну и рано или поздно доступная память закончится, и вкладка упадёт. Чтобы работало правильно, надо просто сохранить начальную длину в переменную:

function duplicate(a) { 
  if (Array.isArray(a)) { 
    for (var i = 0, n = a.length; i < n; i++) { 
      a.push(a[i]); 
    } 
  } 
 
  return a; 
} 
 
console.log(duplicate([1, 2, 3]));

READ ALSO
Это магия callback-ов? [дубликат]

Это магия callback-ов? [дубликат]

Работаю с Vuejs, наткнулся скорей всего на магию callback-ов, как мне кажется

135
При скроле менять класс у body

При скроле менять класс у body

Никак не получается решить задачку:

139
Как вывести массив json полученный в ответе ajax в таблицу

Как вывести массив json полученный в ответе ajax в таблицу

Не могу заполнить таблицу данными которые приходят от сервлета с помощью ajaxСитуация такая, при нажатии на объект в таблице я отправляю его...

160
Что такое IIFE и как это работает [дубликат]

Что такое IIFE и как это работает [дубликат]

Последняя задача отсюда: https://learnjavascript

146