Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Корректный возврат значения функции (https://javascript.ru/forum/misc/53437-korrektnyjj-vozvrat-znacheniya-funkcii.html)

WorkAccountMain 04.02.2015 09:33

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

<...>

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

<...>

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

var someElem = null;

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

return someElem;

}


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

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

ksa 04.02.2015 10:23

Цитата:

Сообщение от WorkAccountMain
Во время выполнения кода someVar присваивается сначала null, затем выполняется функция someFunction.

Пока в твоем примере переменной someVar присваивается значение, возвращаемое функцией someFunction...
И не более того.

demoniqus 05.02.2015 11:03

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

ksa 05.02.2015 11:34

Цитата:

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

Не важно что идет первым...

var a=aFnc();
alert(a);
function aFnc(){return 1;};
function bFnc(){return 2;};
var b=bFnc();
alert(b);

demoniqus 05.02.2015 11:50

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

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



Тогда единственным вариантом могут быть траблы в строке 11 <где-то someElem присваивается новое значение > - возможно код содержит в себе нечто, требующее полной загрузки страницы.

ksa 05.02.2015 11:52

Цитата:

Сообщение от demoniqus
А вот такой вариант уже не пашет...

Они в разных
<script>
...
</script>

Значит и обрабатываться будут по мере "поступления" "секций" script...

demoniqus 05.02.2015 12:13

Всю жизнь был уверен, что ПРИНЦИПИАЛЬНО сначала надо объявить, а потом использовать ... и что это не зависит ни от чего.)))

ksa 05.02.2015 13:25

Цитата:

Сообщение от demoniqus
Всю жизнь был уверен ...

Есть многое на свете, друг Горацио, что не подвластно нашим мудрецам... (с) :D

Aries 06.02.2015 17:48

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

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

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

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


И будет вам счастье.


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