Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Возвращение значения из функции (https://javascript.ru/forum/events/5320-vozvrashhenie-znacheniya-iz-funkcii.html)

dba 04.10.2009 18:35

Возвращение значения из функции
 
var value=foo();

function foo(){
function foo2(){
return "somevalue"; //внимание
}
foo2();
}

/*
Собственно, надеюсь, вы понимаете о чём речь. Нужно из функции, объявленной в функции, то есть из функции foo.foo2() заставить функцию foo() вернуть значение, и соответственно, завершиться

Долблюсь уж несколько дней - не понимаю :blink:
СПАСАЙТЕ!!
*/

Dmitry A. Soshnikov 04.10.2009 18:58

return foo2();

Gvozd 04.10.2009 19:03

так что ли?
var value=foo();

function foo(){
function foo2(){
return "somevalue"; //внимание
}
return foo2();
}

dba 04.10.2009 19:11

Охты, точно

Но тут всё сложнее

function foo(){
  sthElem.onclick=function(){
    foo.retval();
  }

  function retval(){
    return "somevalue"; //Во-во, вот так
  }
}
var value=foo();


Не спрашивайте, почему код такой тупой, это просто упрощённый вариант

dba 04.10.2009 19:36

131 просмотр.... НУ ПОЖАЛУЙСТА
КТОНИБУДЬОТВЕТТЬЕ

Kolyaj 04.10.2009 20:11

Во-первых, у foo нет свойства retval. Во-вторых, что вообще получиться-то должно?

dba 04.10.2009 20:52

Опс
Сорри
Ступил
Во

function foo(){
  sthElem.onclick=function(){
    foo.retval();
  }
 
  foo.retval=function(){
    return "somevalue"; //Во-во, вот так
  }
}
var value=foo();


>> Во-вторых, что вообще получиться-то должно?

Какое это имеет отношение к вопросу? Я задаю конкретный вопрос, надеясь получить конкретный ответ: "ты тупой, надо делать так и так"
Мне не нужны советы по проекту, мне нужен определённый, причём правильный, без флуда ответ

Kolyaj 04.10.2009 21:13

Цитата:

Сообщение от dba
Мне не нужны советы по проекту, мне нужен определённый, причём правильный, без флуда ответ

Понятно, жди.

dba 04.10.2009 21:18

Ээх, приходится....

Gvozd 04.10.2009 21:27

у вас тут в логике явный пробел.у вас выходит так:
1)вызываем функцию foo()
2)в ней выставляем обработчик события(который сработает позже, либо возможно никогда)
3)внутри обработчика события(который будет выполнен в будущем) инициируется переменная, которую мы ходим присвоить другой переменной сейчас
наглядная аналогия:
вы сказали своему 20-летнему сыну, чтобы ему пора женится(у него сейчас даже девушки нету), и пошли сразу же после разговора вклеивать в семейный альбом фотографию со свадьбы своего сына

в общем, вам надо пересмотреть свою логику приложения

поэтому у вас и спрашивают, что должно получится в итоге
пока что ваши махинации выглядят весьма непонятно и бессмысленно

Kolyaj 04.10.2009 22:34

Цитата:

Сообщение от Gvozd
в общем, вам надо пересмотреть свою логику приложения

На вопрос отвечай. )))

dba 04.10.2009 23:57

Не важно, как они выглядят в вашем понимании

Функция должна ждать события, и только после этого возвращать значение и завершаться
Событие будет, иначе быть не может, если сразу после этого не уничтожить объект :-) Это не важно

Достаточно ~6 человек сказать "это невозможно" и привести доказательства и я пойму, что это невозможно

Но скажите хоть что-то по теме!!!!!! Хотя бы один человек!!!!!!

x-yuri 05.10.2009 12:09

Цитата:

Сообщение от dba
function foo(){
sthElem.onclick=function(){
foo.retval();
}
 
foo.retval=function(){
return "somevalue"; //Во-во, вот так
}
}
var value=foo();

Цитата:

Сообщение от dba
Какое это имеет отношение к вопросу? Я задаю конкретный вопрос, надеясь получить конкретный ответ: "ты тупой, надо делать так и так"
Мне не нужны советы по проекту, мне нужен определённый, причём правильный, без флуда ответ

ты тупой, надо cделать так:
function foo(){
  sthElem.onclick=function(){
    foo.retval();
    // ... сюда (можно не напрямую, а использовать callback)
  }
 
  foo.retval=function(){
    return "somevalue"; //Во-во, вот так
  }
}
var value=foo(); // переносим этот код...

p.s. флудишь пока что ты ;)
Цитата:

Новичок: Подскажите пожалуста самый крепкий сорт дерева! Весь инет перерыл, поиском пользовался!
Старожил: Объясни, зачем тебе понадобилось дерево? Сейчас оно в строительстве практически не используется.
Новичок: Я небоскрёб собираюсь строить. Хочу узнать, из какого дерева делать перекрытия между этажами!
Старожил: Какое дерево? Ты вообще соображаешь, что говоришь?
Новичок: Чем мне нравиться этот форум - из двух ответов ниодного конкретного. Одни вопросы неподелу!
Старожил: Не нравится - тебя здесь никто не держит. Но если ты не соображаешь, что из дерева небоскрёбы не строят, то лучше бы тебе сначала школу закончить.
Новичок: Не знаите - лучше молчите! У меня дедушка в деревянном доме живёт! У НЕГО НИЧЕГО НЕ ЛОМАЕТСЯ!!!
Но у него дом из сосны, а я понимаю, что для небоскрёба нужно дерево прочнее! Поэтому и спрашиваю!!! А от вас нормального ответа недождёшся!!!
Прохожий: Самое крепкое дерево - дуб. Вот тебе технология вымачивания дуба в солёной воде, она придаёт дубу особую прочность:
Новичок: Спасибо, братан! То что нужно!!!
http://phpfaq.ru/humor

x-yuri 05.10.2009 12:12

p.p.s. http://javascript.ru/forum/showthrea...1721#post31721

dba 05.10.2009 13:34

Анекдот вполне в тему
Как и там, отвечаю: "Новичок: Спасибо, братан! То что нужно!!! "
Но.... Не понял всё-таки :-) Можно готовый код? Извиняюсь, если сильно надоел

__uploaded

Цитата:

Если человек не потрудился объяснить - значит, скорее всего, он не подозревает о глупости своего вопроса. И не надо ему помогать делать глупости.
<<Вопрос №1: "надо есть суп вилкой. Не спрашивайте почему" - это глупость
Вопрос №1version.2: "надо есть суп вилкой. Потому, что блаблабла, блаблабла" - это не глупость>> - ты так считаешь

Но если бы ты отвлёкся от своей аксиомы, и логически подумал, что если не следовать этому правилу, то ответы на вопрос №1 и его мод версию - одинаковы

Так какой смысл расписывать, почему надо есть суп вилкой, если от этого всё поменяется и, в худшую сторону
Во-первых, топикстартеру придётся всё расписывать - трата времени (я и сейчас просто злюсь, что это пишу о_О)
Во-вторых, я много раз видел, как люди, который хотят спросить "как есть суп вилкой" и всё преподробнейше объясняют. И что? И нет ответов. Никому не хочется разбираться в дебрях этого вопроса - хоть ты тресни по швам
В-третьих, это вопрос уже не "как есть суп вилкой", а вопрос про проекту, который, возможно, топикстарту, следовавшему твоей аксиоме, до боли в мозгах костей задавать не хочется, по многим причинам, которым ни ему, по известным ему обстоятельствам (преимущественно секретность проекта итд), ни мне называть не хочется (опять время-время-время)

Следовательно: почему топикстартер должен следовать твоей аксиоме, должен пренебрегать всеми фактами, который я назвал выше? Почему? Да не должен! Ты не доказал утверждение; я его опроверг

Призываю: решайте проблему, не избегайте её!

__uploaded__uploaded

Кажется допёр

Извиняюсь
Ты про .call()?

Сейчас попробую

x-yuri 05.10.2009 14:34

Цитата:

Сообщение от dba
Но если бы ты отвлёкся от своей аксиомы, и логически подумал, что если не следовать этому правилу, то ответы на вопрос №1 и его мод версию - одинаковы

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

Цитата:

Сообщение от dba
Во-первых, топикстартеру придётся всё расписывать - трата времени (я и сейчас просто злюсь, что это пишу о_О)

ну извини, люди же должны знать, на что отвечать

Цитата:

Сообщение от dba
Во-вторых, я много раз видел, как люди, который хотят спросить "как есть суп вилкой" и всё преподробнейше объясняют. И что? И нет ответов. Никому не хочется разбираться в дебрях этого вопроса - хоть ты тресни по швам

можно отделить обоснование, от вопроса. Да и оно не всегда подразумевает много слов

Цитата:

Сообщение от dba
В-третьих, это вопрос уже не "как есть суп вилкой", а вопрос про проекту, который, возможно, топикстарту, следовавшему твоей аксиоме, до боли в мозгах костей задавать не хочется, по многим причинам, которым ни ему, по известным ему обстоятельствам (преимущественно секретность проекта итд), ни мне называть не хочется (опять время-время-время)

фактически не хватает только причины для вопроса, который ты задал. Зачем тебе это нужно. Не обязательно все расписывать

Цитата:

Сообщение от dba
Ты не доказал утверждение; я его опроверг

спешишь, проблема вне контекста - это теория. Меня больше интересуют практические вопросы. Кроме того, на форумах люди обмениваются опытом. Я мог бы узнать, когда нужно есть суп вилкой, но ты не хочешь этого рассказывать. И еще, я считаю, раз уж речь идет о практическом вопросе, что есть разные решения вопроса: одни лучше, другие хуже

p.s. тот текст не я написал

про callback'и
function a(callback) {

    ...
    callback();
    ...
}
a(function() {
    ...
});

dba 05.10.2009 15:49

Не понял коллбак

В гугле нет ничего о_О

__uploaded

Про ту статью - опять не доказал :-D

x-yuri 05.10.2009 16:25

Цитата:

Сообщение от dba
Не понял коллбак

так а что непонятного? Ты хочешь выполнить код по onclick, передай этот код в foo

Цитата:

Сообщение от dba
Про ту статью - опять не доказал :-D

скорее тебе нужно доказать обратное ;) либо http://javascript.ru/forum/31673-post8.html

dba 06.10.2009 00:31

o_O

Не понял

Можно конкретный работающий код?

Простатьюнадоелодоказыват ь

dba 06.10.2009 00:45

Всё, понял

Это невозможно
Верхняя функция уже отработала, только лишь назначила обработчик события и уничтожилась

Соответственно, уже нельзя вернуть значение, так как функции уже нет

Надо ждать, когда произойдёт событие, только после этого завершать функцию

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

Чем я сейчас и занимаюсь

Ну чтож никто не сказал что это не возможно ^_^

x-yuri 06.10.2009 01:13

Цитата:

Сообщение от dba
Чем я сейчас и занимаюсь

приятного аппетита... не забудь потом лицо вымыть ;)

dba 06.10.2009 01:33

Вопрос решён приведённым мною выше способом
Закрыть тему


Часовой пояс GMT +3, время: 15:55.