ребят помогите, по любому возвращает undefined, хатя значени в самой функции верни
ребят помогите, по любому возвращает undefined, хатя значени в самой функции верни, почему? как можно это исправить и вчём причина?
Код JavaScript var lang; function GetURLArgument(arg){ $.post("url_arguments.php", { com: "GET_ARGUMENT", arg_post: arg}) .done(function(data) { if(arg==="lang") lang = data; return data; }); } lang = GetURLArgument("lang") Добавлено через 7 часов 54 минуты пробовал и по другому, например так var url_arguments = new Object(); url_arguments.lang = "ru"; function GetURLArgument(arg, arg_val){ $.post("url_arguments.php", { com: "GET_ARGUMENT", arg_post: arg}) .done(function(data) { if(arg==="lang") arg_val.lang = data; return data; }); } GetURLArgument("lang", url_argument); все равно значении меняется только локально |
Потому что ajax-запросы выполняются асинхронно. Сначала выполняется функция GetURLArgument, которая приказывает браузеру делать запрос и устанавливает функцию-коллбек, что должна выполниться по возвращении ответа, и только потом, когда ответ приходит, выполняется эта самая функция-коллбек. Выполняй все необходимые тебе действия в коллбеке, ну либо выполняй запрос синхронно, что очень нежелательно (ибо браузер на время ожидания ответа повиснет).
|
Цитата:
var x = foo(function bar() { return "value"; }); x == "value"; // может и равно, а может и нет Т.е. важно понимать, что если одна функция что-то возвращает, то меньше всего это означает, что и другая функция вернёт то же. |
Цитата:
x=foo(function() { return "value"; }); y=bar(function() { return "value"; }); console.log(x=="value", y=="value")//true false function foo(bar){return bar()} function bar(bar){bar()} |
newobject, ты вообще не понял, что я написать. Мысль в том и была, что "всё зависит от реализации".
|
Sweet,
Ну а что тут "важно понимать"? Как по-другому ты себе это представляешь? Если бы в языке по умолчанию из ф-ции возвращалось последнее выражение, то можно было бы вопрос ставить. А так -- это самоочевидная вещь. |
Цитата:
|
Цитата:
|
Sweet,
Sweet, если по-твоему это не очевидно, расскажи, как может быть иначе? |
Цитата:
|
Часовой пояс GMT +3, время: 04:01. |