Why do you need global variables? Especially since each script is contained within itself?

Could you instead create a ScriptState struct or something that gets created and destroyed with each call to Execute() ?