使用PyV8从Python函数返回`undefined`?

时间:2013-06-08 01:30:16

标签: javascript python undefined v8 pyv8

我正在使用PyV8,我想用undefined调用javascript函数。似乎评估undefinednull都会返回Python的None值:

>>> evaljs("undefined")
None
>>> evaljs("null")
None

问题当然是它们在javascript中不一样:

>>> evaljs("undefined === null")
False
False
>>> evaljs("undefined") == evaljs("null")
None
None
True

有什么好办法可以做到这一点吗?我实际上想编写一个可以从javascript调用的Python函数,在某些情况下返回undefined,在其他情况下返回null

编辑SSCCE - ness:

import PyV8

context = PyV8.JSContext()

def evaljs(s):
    with context:
        res = context.eval(s)
        print res
        return res

2 个答案:

答案 0 :(得分:0)

正如您在此处看到的那样:null object in Python?,Python中没有nullundefined,只有None ...因此您只能代表{来自JavaScript的{1}}和undefinednull。 JavaScript根据自己的原因对这两者进行了区分,就我自己的经验而言,“未定义”对于JavaScript来说是相当独特的。

我唯一能想到的就是深入了解源代码,看看如何在JavaScript v8引擎中跟踪undefined和null,并在评估带有null或未定义结果的JavaScript语句时尝试让该对象返回。 ..但这是一项艰巨的任务。

答案 1 :(得分:0)

答案是:在当前版本中无法做到这一点。