Как передать переменную из одной функции в другую javascript
Перейти к содержимому

Как передать переменную из одной функции в другую javascript

  • автор:

Функция как переменная в JavaScript

Итак, в предыдущем уроке мы с вами выяснили, что обратившись к функции без круглых скобок, мы получаем ее исходный код.

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

Давайте посмотрим на примере. Пусть у нас есть, например, функция func :

function func() < console.log('!'); >

На самом деле у нас нет функции func . У нас есть переменная func , хранящая в себе исходный код функции.

Мы можем, к примеру, затереть переменную func чем-нибудь другим, например, строкой. В этом случае функция func больше не будет функцией, а будет строкой. Смотрите на примере:

function func() < console.log('!'); >func(); // выведет ‘!’ func = ‘string’; // затрем переменную func console.log(func); // выведет ‘string’

Сделайте функцию func , которая будет возвращать через return какую-либо строку.

Выведите результат работы функции func в консоль.

Выведите исходный код функции func в консоль.

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

Передача переменных между функциями javascript

Например:
Вернуть переменную из одной функции, получить во второй:

 function f1() < var trololo = 345; return trololo; >function f2()

Объявить вторую функцию внутри первой :

 function f1() < var trololo = 345; function f2()< var myTrololo = trololo; >> 

Использовать для связи какой-нибудь объект, к которому будут иметь доступ обе функции:

var GodObj = <>; function f1() < var trololo = 345; GodObj.lala = trololo; >function f2()

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

function f1() < var trololo = 345; f2(trololo); >functin f2(trololo) < if(typeof(trololo)!='undefined') myTrololo = trololo;// Если такой параметр есть >

Как передать переменную из функции в другую, не вызывая ее в другой

Передать переменную из одной функции в другую, не вызывая саму функцию
И так есть 2 функции. В первую функцию func_1 передается перменная q она там как-то обрабатывается.

В main объявить переменную, потом в другой функции ее инициализировать, вызывая функцию scanf
Помогите разобраться с задачей. Нужно в main объявить переменную, потом в другой функции ее.

Как передать переменную из одной функции в другую?
суть вопроса заключается в том, каким образом я могу передать переменную которая хранит имя базы.

Как переменную из одной функции передать в другую?
у меня надо переменную index из функции maxi передать в функцию summa #include "stdafx.h".

Эксперт JS

6485 / 3896 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781

ЦитатаСообщение от deekep Посмотреть сообщение

Как использовать значение id из функции two в функции three, не вызывая two в three
Объявить переменную не в two(), а в one().
Тогда она станет доступна всем вложенным функциям.
67 / 30 / 17
Регистрация: 07.10.2018
Сообщений: 378
amr-now, да, но структура должна быть именно такая и id получается конкретно в функции two

Эксперт JS

6485 / 3896 / 2005
Регистрация: 14.06.2018
Сообщений: 6,781
deekep, значение получайте.
А имя должно быть известно раньше вовне.
67 / 30 / 17
Регистрация: 07.10.2018
Сообщений: 378

Лучший ответ

Сообщение было отмечено amr-now как решение

Решение

amr-now, вы имеете в виду такую структуру?

1 2 3 4 5 6 7 8 9
function one(){ var id = 0; function two(){ id = . ; } function three(){ mess.channel.send(""+id); } }

Ее я тоже пробовал, в функции two нужное значение id присваивается, но за ее пределами остается 0;
3248 / 1159 / 391
Регистрация: 24.07.2016
Сообщений: 1,729

ЦитатаСообщение от deekep Посмотреть сообщение

Ее я тоже пробовал, в функции two нужное значение id присваивается, но за ее пределами остается 0;

Функцию two вам в любом случае необходимо вызвать, чтобы получить значение переменной id, независимо от того, будет ли эта переменная в глобальной области или в локальной, относительно two. В «локальном» случае, вам нужно вернуть результат вызова.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
function one() { let id = 0; function two() { id++; } two(); function three() { console.log(id); } three(); } one(); // 1 // или function one() { function two() { let id = 1; return id; } let id = two(); function three() { console.log(id); } three(); } one(); // 1

1115 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,859
deekep, без вызова функции two() можно попробовать таким нехорошим способом:

1 2 3 4 5 6 7 8 9 10 11 12 13
function one() { function two() { id = 123456; } function three() { const searchValue = 'id = '; const funcBody = two.toString(); const id = funcBody.slice(funcBody.indexOf(searchValue) + searchValue.length - 1, funcBody.indexOf(";")).trim(); console.log(""+id); } three(); } one();

Регистрация: 20.02.2019
Сообщений: 128

Замыкание — возможно ваше решение.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
const funcClosure = () => { id = 'defaultValue'; return function (){ function two() { console.log('two: ', id); id = 'new value' } function three() { console.log('three: ', id); } two(); three(); } } const one = funcClosure(); one();

localStorage в javascript

Давайте рассмотрим подробнее. LocalStorage представляет собой своего рода ячейку памяти в которую мы можем записать чего-нибудь и этим дальше попользоваться. Т.е. это какая-то память, которую используем. Зачем они нужны? Я думаю, вы часто видели на сайтах возможность сохранять свои данные. Или Вас запоминает страничка и говорит. Запомнить Вас?

Итак, далее. В этом плане мы можем полностью рассчитывать на localStorage . Своего рода куки есть, которые в браузере хранятся и ими мы действительно можем пользоваться для таких целей, чтобы где-то запомнить нас и потом к тому, что запоминаем, уже обратиться. Т.е. это банально запись. Вот плюс localStorage в том, что мы можем записать на одной страничке данные, а на другой к этому обратиться. Итак, мы разберем, где нужен localStorage, как с ним работать и разберем все это дело на примере, и зачем они нужны. Поехали! Как мы можем их использовать и зачем они нам нужны мы уже поняли. Это всего-навсего ячейка памяти, куда мы чего-то записываем. А теперь давайте все это посмотрим на деле. Создадим первый файлик. Пусть это будет index.html. Дадим ему классическую структуру данных. Здесь запишем, что это localStorage. И здесь внутри сделаем что-нибудь интересное. Как мы можем записывать данные в localStorage. Если нам надо что-нибудь куда-нибудь записать определенно нам нужно будет работать с тегом script.

Давайте начнем все с построения плана:

Создадим переменную, имя пользователя.

Записать имя пользователя в localStorage.

Обратимся к записанной переменной на другой странице.

Это наш краткий план того , что мы будем делать. Что первое мы хотим сделать? Читаем, создать переменную, имя пользователя. Давайте создадим. В тегах script напишем переменную. Пусть будет var userName и назовем его Иван. Наша задача записывать в localStorage нашу переменную. Для записи в localStorage сначала к нему обратимся. Давайте напишем localStorage.setItem(‘ ’); LocalStorage всегда записывается в виде переменной ключа и значения. Всегда есть своего рода принцип. Сначала мы создадим имя переменной, а потом туда записываем то, что мы хотим записать. Точно также на деле происходит с localStorage. В начале говорим название ключа (нашу переменную), а потом в него пишем саму переменную.

Ну вот и поехали. Первым делом userName пусть будет, или myuser. Это будет ключ нашего localStorage. А в его значение мы запишем userName, который имеет значение Иван.

localStorage.setItem(‘myuser’,username);

Таким образом происходит запись. Т.е. мы сейчас выполнили первое действие записали переменную и имя пользователя. Второе действие, записать имя пользователя в localStorage мы тоже выполнили. И третий пункт нашего блокбастера — это обратиться к записанной переменной на другой страничке. Давайте обратимся пока на этой страничке к этой переменной, к нашей переменной localStorage. Как мы можем к ней обратиться? Давайте попробуем ее куда-то вывести. Пускай это будет у нас console.log. Но сейчас сделаем акцент, если хотим показать внутри нашей переменной что-то, обратиться не записывать, мы должны говорить не setItem, а getItem. Мы говорим. А ну-ка, выведите нам нашего пользователя, который тут есть, пользователя, которого мы тут у вас сохраняли. Это как раз даст возможность вывести. Поэтому здесь мы пишем, что это у нас вывод и выводим из localStorage нашего пользователя.

console.log(localStorage(‘myuser’));

Давайте попробуем посмотреть, а как же это у нас будет работать. Что скажет нам консоль?

localStorage пишется через букву S большую всегда. Еще раз проверяем. Видим, что у нас здесь звучит Иван. Т.е. мы записали в localStorage переменную, а потом ее вычитали. Отлично! По-моему все сработало. А как же нам посмотреть, что мы сделали на другой страничке. Я же заявил о том, что localStorage может помнить то, что у них записывается. Давайте сделаем ссылку на другую страничку. Пусть это у нас будет файл second.html.

Наша цель вывести localStorage на второй страничке. Скопируем:

 console.log(localStorage.getItem(‘myuser’));

и выведем на другой странице, естественно, в тегах script. Вот вставляем, давайте посмотрим. Будет ли это работать? Т.е. сейчас , когда мы перейдем на другую страничку. На second. У нас внизу консоли должна, точно так же появиться наша переменная Иван. Поехали, мы переходим. По-моему, все видно. Т.е. вот мы явно находимся на другой странице. Здесь мы показываем в консоли это значение. Вот таким образом мы можем передавать данные с одной страницы на другую с помощью localStorage. Это та же кука, только элегантно обернута и которая нам дает возможность элегантно и красиво пользоваться ею. И чтобы уже более, как бы качественно, и более интересно попробовать это все дело закрепить, я предлагаю домашку.

Давайте попробуем домашку оформить и за одно вы ее выполните. Потому, что без практики у нас ничего не получится. Она будет сложней, нужно создать массив. Например пусть это будет массив товаров. Например мобильные телефоны. Нужно записать этот массив в localStorage. Но здесь есть подвох, в localStorage мы не можем записывать массивы напрямую.

Поэтому пишу, что массив нужно превратить в строку. Только после этого мы его должны записать. Следующий ход. Вывести этот массив на другой страничке в консоли, как мы это делали вместе. У нас должно быть так все реализовано и построено, чтобы мы в одном месте записали, т.е превратили в строку, перейдя на другую страницу мы уже могли этот массив разобрать. Вот вам основа передачи большего количества информации с помощью кук, которые записываются массивами. На следующей страничке мы должны распарсить наш массив и получить уже результат. Вот это будет основная наша цель.

Попробуйте это сделать — Должно обязательно получиться.

А если что-нибудь будет не так, то пишите, будем отвечать. Поможем разобраться. Все! Успехов! Вам счастливо!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *