CoffeeScript未定义
在javascript中检查variables是否从未创build,我们只是做
if (typeof MyVariable !== "undefined"){ ... }
我想知道我是如何做到这一点的?…我尝试类似的东西
if (MyVariable?false){ ... }
但是这个检查是否MyVariable
是一个函数,如果这样会调用MyVariable(false),如果不是,将调用void(0)或类似的东西。
最后我find了这个简单的方法来做到这一点:
if (MyVariable?){ ... }
这将产生:
if (typeof MyVariable !== "undefined" && MyVariable !== null){ ... }
更新04/07/2014 演示链接
首先,回答你的问题:
if typeof myVariable isnt 'undefined' then # do stuff
除非需要区分未定义和false(例如,myVariable可以是true,false或undefined),否则Magrangs的解决scheme在大多数情况下都可以工作。
只是要指出,你不应该把你的条件包括在括号里,而且你也不应该使用花括号。
如果所有内容都在同一行,则可以使用then
关键字,否则使用缩进来指示条件内部的代码。
if something # this is inside the if-statement # this is back outside of the if-statement
希望这可以帮助!
这个答案适用于较早版本的coffeescript。 如果你想得到更新的答案(截至2014年7月),请参阅Jaider的答案,
这coffeescript做你想要的,我想:
if not MyVariable? MyVariable = "assign a value"
其中产生:
if (!(typeof MyVariable !== "undefined" && MyVariable !== null)) { MyVariable = "assign a value"; }
❑如果您首先对MyVariable
进行赋值,即使您将MyVariable
设置为undefined( 如此代码中所示) ,则编译为:
if (!(MyVariable != null)) { MyVariable = "assign a value"; }
我相信这是有效的,因为CoffeeScripts Existential Operator
(问号)所使用的!=
undefined
等于null
。
PS你真的可以得到if (MyVariable?false){ ... }
工作? 除非存在操作符和假MyVariable? false
之间存在空格,否则它不会编译我MyVariable? false
MyVariable? false
,然后使CoffeeScript将其作为一个函数进行检查,因为它认为这是MyVariable
一个参数, 例如 :
if MyVariable? false alert "Would have attempted to call MyVariable as a function" else alert "but didn't call MyVariable as it wasn't a function"
生产:
if (typeof MyVariable === "function" ? MyVariable(false) : void 0) { alert("Would have attempted to call MyVariable as a function"); } else { alert("but didn't call MyVariable as it wasn't a function"); }
typeof MyVariable isnt "undefined"
来自js2coffee
除了上面的Jaider的回答 (由于名誉不足 , 我无法评论) ,请注意,如果它是对象/数组内的东西,则是不同的情况:
someArray['key']?
将被转换为:
someArray['key'] != null
来自js2coffee.org的屏幕截图:
我只是使用:
if (myVariable) //do stuff
由于未定义是虚假的,它只会做的东西,如果myVariable不是未定义的。
你只需要知道,它会'做'的值为0,“”和null
我发现将一个variables赋值给一个未定义的非空variables的最简洁的方法是使用unless
:
unless ( myVar? ) myVar = 'val'
为什么不使用OR成语呢?
myVar or 'val'
所以,结果将等于myVar,除非它是未定义的,在这种情况下它将等于'val'。
- 什么时候在JavaScript中使用null或undefined?
- 如何检查JavaScript中的未定义或空variables?
- undefined == undefined是真的。 但是undefined> = undefined是false?
- variables===未定义与typeofvariables===“undefined”
- JavaScript – 确定一个属性是否被定义,并设置为“未定义”,或者是未定义的
- 带有jQuery的HTML5 – e.offsetX在Firefox中未定义
- 如何取消设置JavaScriptvariables?
- 有什么理由使用null,而不是在JavaScript中定义?
- 如何检查在JavaScript中的“未定义”?