我正在尝试从python中的JavaScript调用函数。我正在使用PyV8,可以成功调用一个函数并打印出结果。但是,如果函数包含默认参数,则会出现语法错误。

这很好。

import PyV8

ctxt = PyV8.JSContext()
ctxt.enter()
ctxt.eval("function example(a){return a;}")
render = ctxt.eval("example('hello');")
print render


但是,当我制作示例时,包含如下默认参数:

import PyV8

ctxt = PyV8.JSContext()
ctxt.enter()
ctxt.eval("function example(a = 'hello'){return a;}")
render = ctxt.eval("example();")
print render


我懂了
SyntaxError:SyntaxError:意外令牌=(@ 1:19)->函数示例(a ='hello'){返回a;}

任何帮助表示赞赏。

最佳答案

默认参数是ES6的功能。
PyV8不支持ES6语法。您需要使用shim/polyfil

import PyV8

jsFunc = """
function test(msg, name) {
  (msg === undefined) && (msg = 'hello');
  (name === undefined) && (name = 'world');
  return msg + ' ' + name
}
"""


ctxt = PyV8.JSContext()
ctxt.enter()
ctxt.eval(jsFunc)
render1 = ctxt.eval("test();")
render2 = ctxt.eval("test('hi');")
print render1
print render2


印刷品:

hello world
hi world

09-17 07:53