На самом деле, правильный способ узнать, возвращается ли объект по сценарию undefined
, задав ScriptObjectMirror
:
import jdk.nashorn.api.scripting.ScriptObjectMirror;
Object m = engine.get("out");
if (ScriptObjectMirror.isUndefined(m)) {
System.out.println("m is undefined");
}
Альтернативный способ, с помощью Насхорн внутреннего API
Вы также можете сделать это, проверяя его тип:
import jdk.nashorn.internal.runtime.Undefined;
Object m = engine.get("out");
if (m instanceof Undefined) {
System.out.println("m is undefined");
}
Обратите внимание, что Nashorn не сделал Undefined
типа часть из общедоступный API, поэтому его использование может быть проблематичным (они могут изменять это между релизами), поэтому вместо этого используйте ScriptObjectMirror
. Просто добавил это здесь как любопытство ...
Что означает 'engine.eval (" out === undefined ")' return? – chrylis
возвращает true –