4

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)

この変数のスコープは何ですか?

ありがとう

4

1 に答える 1