我正在使用 javax.script 从 java 方法执行 javascript。
在我的 java 方法中,我调用了 javascript 中定义的不同函数。在 javascript 方面,我想保留一个全局变量,因此调用的输出取决于之前的输出。
方法
public void myMethod(){
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.eval(new java.io.FileReader("myTest.js"));
Invocable inv = (Invocable) engine;
Object obj = engine.get("obj");
inv.invokeMethod(obj, "method1");
inv.invokeMethod(obj, "method2");
}
myTest.js
var obj=new Object();
var myStatus=1;
obj.method1 = function(){
myStatus++;
};
obj.method2 = function(){
for (var i=0; i<myStatus)
println('Hello world');
}
脚本中声明的变量的范围是什么?如果我使用向脚本添加全局变量
engine.put("globalVariable", myVariable)
这个变量的范围是什么?
谢谢