A more general way to look at it would be:
Set X to Function.Call("func", Y)
This would be run in the following order:
1. Call "func" with parameter 0 being Y
2. Run events for "func", which set a return value
3. Set X to the return value
The function has no idea what happens to its return value. It's used by whatever called the function.
So in my original example, both X and Y are the "experience" variable. If you wanted the return value to go somewhere else, you'd use a different action and cut and paste the Function.Call(...) expression in to one of its parameters.