作者:朱森博其实一直在想你 | 来源:互联网 | 2023-05-16 11:56
我正在运行此代码
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval("var out;");
engine.eval("var out1 = null;");
Object m = engine.get("out");
Object m1 = engine.get("out1");
得到m == null和m1 == null.
如何确定值是未定义还是null?
1> Renato..:
实际上,了解脚本返回的对象的正确方法undefined
是询问ScriptObjectMirror
:
import jdk.nashorn.api.scripting.ScriptObjectMirror;
Object m = engine.get("out");
if (ScriptObjectMirror.isUndefined(m)) {
System.out.println("m is undefined");
}
替代方式,使用Nashorn内部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
.刚刚在这里添加了这个好奇心......