如何在JavaScript中检查未定义或空变量?

我们经常在JavaScript代码中使用以下代码模式

if (typeof(some_variable) != 'undefined' && some_variable != null){
    // Do something with some_variable}

有没有一种不那么冗长的检查方法,具有同样的效果?

根据一些论坛和文献,简单地说,以下几点应该有同样的效果。

if (some_variable){
    // Do something with some_variable}

不幸的是,火虫在运行时将此类语句计算为错误。some_variable是个未知数,而第一个就没问题了。这仅仅是Firebug(不想要的)行为,还是这两种方式之间真的有一些不同?


达令说
浏览 558回答 3
3回答

白猪掌柜的

你必须区分不同的情况:变量可以是undefined或未申报..如果在其他上下文中访问未声明的变量,则会得到错误typeof.if(typeof someUndeclaredVar == whatever) // worksif(someUndeclaredVar) // throws error已声明但未初始化的变量是undefined.let foo;if (foo) //evaluates to false because foo === undefined未定特性,就像someExistingObj.someUndefProperty..未定义的属性不会产生错误,只会返回undefined,当转换为布尔值时,计算结果为false..所以,如果你不关心0和false,使用if(obj.undefProp)都没问题。基于这一事实,有一个常见的成语:value = obj.prop || defaultValue意思是“如果obj拥有财产prop,分配给value,否则将分配默认值。defautValue".有些人认为这种行为令人困惑,认为它会导致难以发现的错误,并建议使用in运算符value = ('prop' in obj) ? obj.prop : defaultValue
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript