2

我正在使用 PyV8,我想用undefined. 似乎评估两者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
4

2 回答 2

0

正如您在此处看到的:Python 中的空对象?, 在 Python 中没有nullor undefined,只是None... 所以你只能像在 Python 中那样从 JavaScript表示undefined和。JavaScript 出于自身原因将两者区分开来,据我自己的经验所知,“未定义”对于 JavaScript 来说是相当独特的。nullNone

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

于 2013-06-09T13:08:27.307 回答
0

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

于 2013-08-07T19:30:57.963 回答