gpt4 book ai didi

java - Nashorn 能够将 undefined variable 传递给函数

转载 作者:行者123 更新时间:2023-12-01 11:49:35 25 4
gpt4 key购买 nike

这是一段非常简单的 Java 代码,用于计算一些 JavaScript 代码:

public static class Logger
{
public log(String line)
{
System.out.println(line);
}
}
public static void main(String[] args)
{
NashornScriptEngineFactory factory = new NashornScriptEngineFactory();
ScriptEngine engine = factory.getScriptEngine(new String[]
{
"-strict",
"--no-java",
"--no-syntax-extensions"
});
engine.put("log", new Logger());
engine.eval(
"var ifExists = function(checkExists, otherwise)" +
"{" +
"if(typeof checkExists !== 'undefined')" +
"{" +
"return checkExists;" +
"}" +
"else" +
"{" +
"return otherwise;" +
"}" +
"};" +
"log.log(ifExists(someVariableThatIsUndefined, 'this string should be returned'));"
);
}

当它尝试运行 ifExists(someVariableThatIsUndefine, '这个字符串应该被返回') 时,引擎会抛出一个错误,说 someVariableThatIsUndefine 是..well undefined,这违背了实用程序方法检查某些内容是否未定义的目的。

是否有任何可能的方法可以将“someVariableThatIsUndefine”传递给一个函数,该函数返回该变量(如果已定义),否则返回其他内容。

唯一的限制是由解析到引擎的参数“-strict、--no-java、--no-syntax-extensions”控制的

最佳答案

您可以使用

测试函数是否存在
window['myFunctionName'] !== 'undefined'

或者如果是属性(property)

this['myPropertyName'] !== 'undefined'

关于java - Nashorn 能够将 undefined variable 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28903378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com