我们对脚本引擎如何处理全局变量感到好奇。我们正在寻找一个脚本引擎,该引擎不会在调用时保留全局变量的状态。那里有这样的引擎吗?我们正在寻找一种可以在Java的脚本引擎API下使用的脚本语言。

多次调用脚本引擎时,对eval()或valuate()方法的顶级调用将保留全局变量的状态,这意味着随后对eval()的调用将使用上次调用留下的全局变量。是否有一个脚本引擎不保留状态或提供重置状态的能力,以便每次调用脚本引擎时全局变量都处于其初始状态?

最佳答案

后续调用eval()不会重置scriptEngine的状态:

    myScriptEngine.eval("var myGlobalVar = 5");
    myScriptEngine.eval("myGlobalVar++"); //will set myGlobalVar to 6;


另一方面,一个ScriptEngineManager中的多个scriptEngine是完全独立的(至少JAV8就是这种情况)。

09-11 18:06
查看更多