如何在transcrypt中测试undefined

How to test undefined in transcrypt

我需要测试 javascript 对象属性是否存在。

例如查看 jquery 扩展名是否可用。浏览器控制台中的下一行 returns undefined :

$("#myid").toc

我想在transcrypt中测试这个值,我试过了:

getattr(S ("#myid"), "toc") is None

但它不起作用:-/

以下将起作用:

HTML:

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>    
    </head>
    <body>
        <div id="myid"></div>
        <script src="__javascript__/test.js"></script>
    </body>
</html>

转译:

__pragma__ ('alias', 'S', '$')

print (111, getattr (S ('#myid') [0], 'style') != None)
print (222, getattr (S ('#myid') [0], 'toc') != None)

console.dir (S ('#myid') [0])

它打印:

111 True
222 False
div#myid

作为替代方案,您始终可以在 Transcrypt 中嵌入 JS:

__pragma__ ('js', '{}', '''
   console.log (333, $("#myid")[0].style != undefined);
   console.log (444, $("#myid")[0].toc != undefined);
''')

打印:

333 true
444 false

顺便说一下,我更喜欢 Python 语法。但在极端情况下,JS 总是作为一种逃避方式存在,尽管你可能永远不需要它。