Javascript.RU

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

Корректный возврат значения функции
Имеется блок кода:

<...>

someVar = someFunction(<аргументы>);

<...>

someFunction(<аргументы>) {

var someElem = null;

<где-то someElem присваивается новое значение >

return someElem;

}


Во время выполнения кода someVar присваивается сначала null, затем выполняется функция someFunction. Мне необходимо, чтобы сначала выполнилась функция, а затем произошло присваивание возвращенного значения переменной someVar. Понимаю, что надо делать через асинхронный вызов, но не понимаю, как правильно это сделать.

Подскажите, пожалуйста, как решить проблему?

Последний раз редактировалось WorkAccountMain, 04.02.2015 в 09:36.
Ответить с цитированием
  #2 (permalink)  
Старый 04.02.2015, 10:23
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от WorkAccountMain
Во время выполнения кода someVar присваивается сначала null, затем выполняется функция someFunction.
Пока в твоем примере переменной someVar присваивается значение, возвращаемое функцией someFunction...
И не более того.
Ответить с цитированием
  #3 (permalink)  
Старый 05.02.2015, 11:03
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 182

в таком виде вообще должна вылетать ошибка: ты сначала вызываешь выполнение функции строкой someVar = someFunction();, а лишь затем даешь определение этой функции. Поменяй порядок
Ответить с цитированием
  #4 (permalink)  
Старый 05.02.2015, 11:34
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от demoniqus
в таком виде вообще должна вылетать ошибка: ты сначала вызываешь выполнение функции строкой someVar = someFunction();, а лишь затем даешь определение этой функции.
Не важно что идет первым...

var a=aFnc();
alert(a);
function aFnc(){return 1;};
function bFnc(){return 2;};
var b=bFnc();
alert(b);
Ответить с цитированием
  #5 (permalink)  
Старый 05.02.2015, 11:50
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 182

я удивлен... не думал о такой особенности...
<script>
  var a = aFnc();
  function aFnc(){};
</script>

Такой вариант работает... А вот такой вариант уже не пашет...
<script>
  var a = aFnc();
</script>
<script>
  function aFnc(){};
</script>



Тогда единственным вариантом могут быть траблы в строке 11 <где-то someElem присваивается новое значение > - возможно код содержит в себе нечто, требующее полной загрузки страницы.
Ответить с цитированием
  #6 (permalink)  
Старый 05.02.2015, 11:52
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от demoniqus
А вот такой вариант уже не пашет...
Они в разных
<script>
...
</script>

Значит и обрабатываться будут по мере "поступления" "секций" script...
Ответить с цитированием
  #7 (permalink)  
Старый 05.02.2015, 12:13
Профессор
Отправить личное сообщение для demoniqus Посмотреть профиль Найти все сообщения от demoniqus
 
Регистрация: 28.05.2008
Сообщений: 182

Всю жизнь был уверен, что ПРИНЦИПИАЛЬНО сначала надо объявить, а потом использовать ... и что это не зависит ни от чего.)))
Ответить с цитированием
  #8 (permalink)  
Старый 05.02.2015, 13:25
Аватар для ksa
ksa ksa на форуме
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от demoniqus
Всю жизнь был уверен ...
Есть многое на свете, друг Горацио, что не подвластно нашим мудрецам... (с)
Ответить с цитированием
  #9 (permalink)  
Старый 06.02.2015, 17:48
Интересующийся
Отправить личное сообщение для Aries Посмотреть профиль Найти все сообщения от Aries
 
Регистрация: 02.02.2013
Сообщений: 26

Приучите себя сначала определять сначала ВСЕ переменные, а под ними функции. И уже потом логику.

(function() {
    var test1 = {},
          test2 = 'some text...',
          var1, var2;

    function moduleFunction1() {
        //
    }
    
    function moduleFunction2() {
        //
    }

    var1 = moduleFunction1();
    var2 = moduleFunction2()
})();


И будет вам счастье.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возврат значения из функции eniacty Общие вопросы Javascript 4 17.11.2014 16:50
Возврат аргумента в функции из вызывающей её функции ivanshum Общие вопросы Javascript 2 11.07.2014 13:36
Возврат принятого значения внешней функции из jquery ajax pro_xaoc jQuery 2 20.06.2014 12:20
Возврат значения функции после завершения анимации (затухания) grego jQuery 5 16.04.2013 22:25
Превращение значения обьекта в название функции. alexandre Общие вопросы Javascript 4 16.02.2011 01:04