It seems i'm a bit lost. "There is no such thing as 'current script'" and "first script makes changes to the script context present in the script engine" seems totally opposite to me O_O. What's the difference between "script context" and "current script"? Why evaluating "function foo() {}" will change script context but evaluating "foo" will not? Is it any rules available how evaluation changes script context?