是否有一个很好的简单方法来检查Javascript中的变量是否有值?
我想检查此:是否有一个很好的简单方法来检查Javascript中的变量是否有值?
if (typeof myVar != "undefined" && myVar != null)
...
换句话说,我要检查,如果一个变量具有定义的值(包括0或空字符串),但不undefined或null,其解读为无价值。
我每次都必须做两部分检查还是有方便的快捷方式?
如果你想允许0
和""
作为有效值和你想覆盖变量的情况下,甚至可能不会delcared,但不考虑空有效的值,那么你必须明确检查undefined
和null
这样的:
if (typeof myVar !== 'undefined' && myVar !== null)
...
很多价值观是falsey(他们并不满足if (myVar)
,所以你真的有意识地决定你要测试哪些针对所有这些都是falsey:
undefined
false
0
""
null
NaN
如果你想允许一些,但不是其他人,那么你必须做一个比上面显示的if (myVar)
更具体的测试,以隔离你关心的值。
下面是对falsey值的一个很好的写法:http://www.sitepoint.com/javascript-truthy-falsy/。
如果知道变量已经宣布和你只是想看看它是否已与非NULL的初始化,您可以使用此:
if (myVar != undefined)
...
只使用!=
,而不是!==
允许这通过类型转换测试undefined和null。虽然我不推荐这样做,因为如果你想辨别falsey值,最好不要让JS引擎做任何类型的转换,所以你可以控制它的功能,而不必记住所有的类型转换平等规则。我这个固守待更明确:
if (typeof myVar !== 'undefined' && myVar !== null)
...
如果你想知道是否有任何非falsey值,当然你可以做到这一点(但不会允许0
或""
为有效值:
if (myVar)
...
2-部件方法如果不检查的typeof
首先,你会得到一个引用错误最终
如果MYVAR可能是不确定的,称它没有。检查类型将引发错误。
如果它被定义为null(如myvar = element.lastChild没有孩子的元素),如果你只是使用typeof,你会错过捕获它。
那么,null是一个定义的值...所以如果你想确保变量不包含null,并且没有定义,你必须执行两个检查。
'null == undefined'返回'true'。 'null === undefined'返回'false'。 – Kenaniah
参见:http://stackoverflow.com/questions/6031372/undefined-and-null –
为自己写一个函数并回到解决真正的问题:) – Kos