javax.script を使用して、Java メソッドから JavaScript を実行しています。
私の Java メソッドでは、JavaScript で定義されたさまざまな関数を呼び出します。JavaScript側では、グローバル変数を保持したいので、呼び出しの出力は前のものに依存します。
Java メソッド
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)
この変数のスコープは何ですか?
ありがとう