Вынуть элемент из функции
Я сильно сомневаюсь что есть какой то метод для решения данного вопроса, но на всякий случай.
У меня есть кнопка которая вызывает функцию А. Функция А создает массив и отправляет его в функцию В где над ним происходят изменения, а именно пользователь вручную заменяет некоторые значения. У меня есть другая кнопка которая должна делать проверку были ли внесены изменения. Другими словами мне нужно взять массив из функции А до того как она его отправит в функцию В. У меня никак не выходит это сделать. Я пробовала сделать в функции А return(arr), то есть возвратить нужный мне массив, но как поняла вставить его потом в функцию В как параметр по принципу: В(А()) в JS нельзя. Может есть способ вытащить какой то локальный элемент в глобальный (вообще вне функций) до того как он будет отправлен на переделку? з.ы. хотя я понимаю что тут изначально скорее всего плохая структура функций что одна в другой (как цепная реакция). |
Цитата:
var arr = arr1; у вас получается два указателя на одни и те же данные. И при последующем изменении одного из этих массивов вы получите точно такие же изменения и во втором. Если вам нужно сохранить состояние первого массива (для последующего поиска изменений), то нужно явно скопировать данные в другую переменную: return arr.slice(); |
Ну допустим у меня есть:
function A(){ let x = [1,2] ........ С(х) B(x) } function B(x){ x = что то там } function С(x){ let arr2 = x; return arr2.slice(); } как мне теперь вынуть первоначальный х (вторая строчка) за пределы функций? Я попыталась сделать функцию С, перенести туда и передать в другую переменную, но это по сути бесполезно, так как просто вызвать потом C() я не могу, так как мне нужно ввести аргумент х который дается в первой функции. Запустить все функции сначала я тоже не могу, так как в реальности у меня этот х рандомно генерируется, то есть если запустить функцию заного этого будет уже другой массив. В данном случае никак ни вынуть? з.ы. я пробовала также задать х заранее в глобале, по принципу: let x = []; function A(x){ ...} но изменения внесенные в массив в функции никак не отразятся на изначальном, он также навсегда останется пустым. |
function A(){ let x = [1,2] let y = x.slice(); B(x) alert('x=' + x); return y; } function B(x){ x.push(3); } var y = A(); alert('y=' + y); |
Часовой пояс GMT +3, время: 01:14. |