Faktycznie, poprawny sposób sprawdzenia, czy obiekt zwracany przez skrypt to undefined
, to pytanie: ScriptObjectMirror
:
import jdk.nashorn.api.scripting.ScriptObjectMirror;
Object m = engine.get("out");
if (ScriptObjectMirror.isUndefined(m)) {
System.out.println("m is undefined");
}
Alternatywny sposób, używając Nashorn wewnętrznego API
Można również zrobić to poprzez sprawdzenie jego typ:
import jdk.nashorn.internal.runtime.Undefined;
Object m = engine.get("out");
if (m instanceof Undefined) {
System.out.println("m is undefined");
}
Zauważ, że Nashorn nie zrobić część Undefined
typ public API, więc używanie go może być problematyczne (można je zmienić między wydaniami), więc zamiast tego użyj ScriptObjectMirror
. Dodałem to tutaj jako ciekawostkę ...
Co oznacza "engine.eval (" out === undefined ")' return? – chrylis
to zwraca true –