有没有一种方法可以使用PyV8对带有默认参数的JavaScript函数进行求值?

2024-10-03 23:31:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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

我明白了 语法错误:语法错误:意外标记=(@1:19)->;函数示例(a='hello'){返回a;}

感谢您的帮助


Tags: 函数importhello参数returnexampleevalfunction
1条回答
网友
1楼 · 发布于 2024-10-03 23:31:10

默认参数是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

相关问题 更多 >