纳肖恩中的匿名函数
Anonymous function in Nashorn
假设有这样的文件
(function () {
function change() {
print('test');
}
function test() {
return 'Testing';
}
})();
如何使用 nashorn 将参数传递给此函数?我不想通过终端运行它,我必须创建将 String 作为参数并使用 js 代码处理它的方法。
上面的脚本定义了一个匿名函数并立即调用它!如果你"评估",你会得到那个函数的结果。如果你想定义一个匿名函数并从java代码调用它,你可以写这样的东西:
import javax.script.*;
import jdk.nashorn.api.scripting.*;
public class Main {
public static void main(String[] args) throws Exception {
ScriptEngineManager m = new ScriptEngineManager();
ScriptEngine e = m.getEngineByName("nashorn");
// define an anoymous function
JSObject multiply = (JSObject) e.eval("function(x, y) { return x*y; }");
// call that anon function
System.out.println(multiply.call(null, 34, 5));
// define another anon function
JSObject greet = (JSObject) e.eval("function(n) { print('Hello ' + n)}");
greet.call(null, "nashorn");
}
}
我能够通过以下方式解决这个问题:
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
String task = "function(a, b) { return a + b; }";
engine.eval("var task = " + task);
Double result = (Double) ((Invocable) engine).invokeFunction("task", 10, 4);
System.out.println(result); // Output: 14.0
相关文章:
- 无法导出函数expressjs/requestjs中的变量
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 如何使用javascript函数在gridview中按行启用/禁用复选框
- onChange 函数更改表中显示的数据
- 纯javascript函数在cheerios中工作吗
- 为什么在调用父构造函数时在[]中发送数据
- 在javascript函数的循环中设置全局布尔变量的最佳语法
- 咖啡'@'或者这在函数和类中
- jQuery克隆函数在chrome中不起作用
- 函数在JavaScript中重复n次
- 从 java 脚本调用函数时 PHP 中出错
- 如何使用JavaScript函数在网页中显示PHP变量
- 使用默认js函数的javascript中的日期的第二天
- 使用promise通过外部函数从DOM中检索属性
- 函数比javascript中的步进器增加/减少更多
- 如何知道函数的参数中传递的var名称
- 是否可以在javascript函数参数列表中调用多个函数
- 将变量分配给函数在JavaScript中不起作用
- instanceOf函数在JavaScript中的实现
- 纳肖恩中的匿名函数