我们对脚本引擎如何处理全局变量感到好奇。我们正在寻找一个脚本引擎,该引擎不会在调用时保留全局变量的状态。那里有这样的引擎吗?我们正在寻找一种可以在Java的脚本引擎API下使用的脚本语言。
多次调用脚本引擎时,对eval()或valuate()方法的顶级调用将保留全局变量的状态,这意味着随后对eval()的调用将使用上次调用留下的全局变量。是否有一个脚本引擎不保留状态或提供重置状态的能力,以便每次调用脚本引擎时全局变量都处于其初始状态?
最佳答案
后续调用eval()不会重置scriptEngine的状态:
myScriptEngine.eval("var myGlobalVar = 5");
myScriptEngine.eval("myGlobalVar++"); //will set myGlobalVar to 6;
另一方面,一个ScriptEngineManager中的多个scriptEngine是完全独立的(至少JAV8就是这种情况)。