Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.10.2019, 02:21
Новичок на форуме
Отправить личное сообщение для Ruru Посмотреть профиль Найти все сообщения от Ruru
 
Регистрация: 19.10.2019
Сообщений: 6

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

У меня есть кнопка которая вызывает функцию А.

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

У меня есть другая кнопка которая должна делать проверку были ли внесены изменения. Другими словами мне нужно взять массив из функции А до того как она его отправит в функцию В. У меня никак не выходит это сделать.
Я пробовала сделать в функции А return(arr), то есть возвратить нужный мне массив, но как поняла вставить его потом в функцию В как параметр по принципу: В(А()) в JS нельзя.

Может есть способ вытащить какой то локальный элемент в глобальный (вообще вне функций) до того как он будет отправлен на переделку?


з.ы. хотя я понимаю что тут изначально скорее всего плохая структура функций что одна в другой (как цепная реакция).
Ответить с цитированием
  #2 (permalink)  
Старый 20.10.2019, 04:49
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

Сообщение от Ruru
У меня есть другая кнопка которая должна делать проверку были ли внесены изменения. Другими словами мне нужно взять массив из функции А до того как она его отправит в функцию В.
Похоже, что вы просто не учли того факта, что в javascript переменная типа "массив" является лишь указателем. Т.о. при простом присваивании:
var arr = arr1;

у вас получается два указателя на одни и те же данные. И при последующем изменении одного из этих массивов вы получите точно такие же изменения и во втором. Если вам нужно сохранить состояние первого массива (для последующего поиска изменений), то нужно явно скопировать данные в другую переменную:
return arr.slice();
Ответить с цитированием
  #3 (permalink)  
Старый 20.10.2019, 21:41
Новичок на форуме
Отправить личное сообщение для Ruru Посмотреть профиль Найти все сообщения от Ruru
 
Регистрация: 19.10.2019
Сообщений: 6

Ну допустим у меня есть:

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){
...}

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

Последний раз редактировалось Ruru, 20.10.2019 в 21:47.
Ответить с цитированием
  #4 (permalink)  
Старый 20.10.2019, 22:11
Аватар для Белый шум
Профессор
Отправить личное сообщение для Белый шум Посмотреть профиль Найти все сообщения от Белый шум
 
Регистрация: 19.01.2012
Сообщений: 505

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);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как определить пользователь сам нажал элемент или при помощи функции click(); finlandia Элементы интерфейса 13 10.01.2013 23:09
Выбрать элемент у родителя которого сын это элемент по которому кликнули MalikSPB Events/DOM/Window 8 30.12.2012 12:22
динамическое содержимое функции alfmaster Общие вопросы Javascript 2 28.05.2011 17:10
Превращение значения обьекта в название функции. alexandre Общие вопросы Javascript 4 16.02.2011 01:04
arguments вызвавшей функции mister_maxim Общие вопросы Javascript 4 12.10.2010 16:21