Unless the last line in a handler is something like a log request, which has a side-effect, but no value.
( The value of the mostly recently evaluated expression is bound to the built-in name result, and in the absence of an explicit return, the function/handler returns the current value of result, if any … )
on test()
2 + 2
log result
end test
on run
{test(), 2 + 2}
end run
As @ComplexPoint says, there are instances where nothing will be returned.
But — as a rule-of-the-thumb you should always be aware of the possibility of a returned value and test for it.
set x to "some text"
return result
The “result” variable will tell you what that is.
Another rule-of-the-thumb is to always test AppleScripts using the Script Editor.app or preferably Script Debugger if you have it.
If you use the Script Editor then it's a good idea to open the Event Log window before you run your script. You get a better sense of what the code is doing when you do this.
(Script Debugger has even better tools for data visualization.)
Otherwise AppleScript is just a magical black-box run from Keyboard Maestro.