在javascript中检查变量是否从未创建过,我们就这么做了
if (typeof MyVariable !== "undefined"){ ... }
Run Code Online (Sandbox Code Playgroud)
我很想知道我是如何在coffeescript中做到的?...我尝试了类似的东西
if (MyVariable?false){ ... }
Run Code Online (Sandbox Code Playgroud)
但是这检查if是否MyVariable是一个函数,如果是这样,将调用MyVariable(false),如果不是,那将调用void(0)或类似的东西.
我想使用CoffeeScript存在运算符来检查undefined的一些对象属性.但是,我遇到了一个小问题.
像这样的代码:
console.log test if test?
Run Code Online (Sandbox Code Playgroud)
编译为:
if (typeof test !== "undefined" && test !== null) console.log(test);
Run Code Online (Sandbox Code Playgroud)
这是我希望看到的行为.但是,当我尝试将它用于对象属性时,如下所示:
console.log test.test if test.test?
Run Code Online (Sandbox Code Playgroud)
我得到类似的东西:
if (test.test != null) console.log(test.test);
Run Code Online (Sandbox Code Playgroud)
哪个看起来不像是对未定义的检查.我可以实现与使用对象相同(1:1)行为的唯一方法是使用更大的检查:
console.log test.test if typeof test.test != "undefined" and test.test != null
Run Code Online (Sandbox Code Playgroud)
问题是 - 我做错了吗?或者编译后的代码是否足以检查属性是否存在(带有类型转换的空检查)?