Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   как вернуть значение из функции return (https://javascript.ru/forum/events/72520-kak-vernut-znachenie-iz-funkcii-return.html)

Conus 04.02.2018 15:35

как вернуть значение из функции return
 
Доброго дня, возникла такая необходимость вернуть значение из функции но она прописана из другого метода

function send(xhttp)
{
   return xhttp.onreadystatechange = function() { ... return значение; }
   //она возвращает весь текст функции а не отработаное значение
}

подскажите пожалуйста что делать

MallSerg 04.02.2018 19:01

такое поведение невозможно по очевидным причинам. И всем уже надоело отвечать на этот вопрос.
Причина в том что ты используешь оператор "=" и оператор "function" если ты поймешь почему ты их используешь станет очевидно почему нельзя вернуть значение из вложенной функции.

Conus 04.02.2018 20:31

но xhttp.onreadystatechange это же состояние
если его проверить и по нему вернуть результат?

MallSerg 04.02.2018 21:08

Цитата:

Сообщение от Conus
но xhttp.onreadystatechange это же состояние

какое нафиг состояние ....

"xhttp" -- это объект
"." -- точка это оператор который позволяет обратится к свойствам объекта
onreadystatechange -- это свойство объекта которому ты присваиваешь значение с помощью оператора "="
и присваиваешь ты ему результат работы другого оператора "function"

Твоя проблема в том что ты не понимаешь как работает строчка из трех операторов и придумываешь абстрактные понятия такие как "состояние". В JavaScript нет такого типа данных как "состояние" следовательно такой тип данных нельзя ни сохранить ни передать. Если тебе необходимо что то похожее ты должен сам это реализовать тем или иным способом.

В данном случае используется тип данных функция.

т.е. return xhttp.onreadystatechange = function() { ... return ...; } ---- вернуть объект свойству которому присвоена функция

Все. ненужно ничего усложнять и придумывать какие то состояния

Еще пару вещей от К.О.
1. Функция возвращает значение только когда ее вызывают
2. В приведенном коде функция присваивается свойству
3. В приведенном коде нет вызова функции которая присваивается свойству следовательно вернуть значение без вызова она не может.

Conus 06.02.2018 21:47

а когда или как происходит вызов функций из свойства
или что обращается к свойству как к функции?

MallSerg 07.02.2018 01:45

Цитата:

Сообщение от Conus (Сообщение 477143)
а когда или как происходит вызов функций из свойства
или что обращается к свойству как к функции?

За это отвечает среда исполнения JavaScript она и вызывает эту функцию. Когда и почему это происходит обычно описывают в документации к среде исполнения или же стараются придерживаться общепринятого стандарта
https://xhr.spec.whatwg.org/#handler...adystatechange

Функции которые вызывает среда исполнения можно называть событиями.
Для того чтобы привязать события к конкретным объектам используют свойства этих объектов т.е. присваивают свойствам функции (обработчики событий)


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