我正在使用PyV8,我想用undefined
调用javascript函数。似乎评估undefined
和null
都会返回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
答案 0 :(得分:0)
正如您在此处看到的那样:null object in Python?,Python中没有null
或undefined
,只有None
...因此您只能代表{来自JavaScript的{1}}和undefined
为null
。 JavaScript根据自己的原因对这两者进行了区分,就我自己的经验而言,“未定义”对于JavaScript来说是相当独特的。
我唯一能想到的就是深入了解源代码,看看如何在JavaScript v8引擎中跟踪undefined和null,并在评估带有null或未定义结果的JavaScript语句时尝试让该对象返回。 ..但这是一项艰巨的任务。
答案 1 :(得分:0)
答案是:在当前版本中无法做到这一点。