为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

达令说 2019-07-13 18:46:24
我们经常在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(不想要的)行为,还是这两种方式之间真的有一些不同?
查看完整描述

3 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

你必须区分不同的情况:

  1. 变量可以是

    undefined

    未申报

    ..如果在其他上下文中访问未声明的变量,则会得到错误

    typeof.

if(typeof someUndeclaredVar == whatever) // worksif(someUndeclaredVar) // throws error

已声明但未初始化的变量是undefined.

let foo;if (foo) //evaluates to false because foo === undefined
  1. 未定特性,就像someExistingObj.someUndefProperty..未定义的属性不会产生错误,只会返回undefined,当转换为布尔值时,计算结果为false..所以,如果你不关心0false,使用if(obj.undefProp)都没问题。基于这一事实,有一个常见的成语:

    value = obj.prop || defaultValue

    意思是“如果obj拥有财产prop,分配给value,否则将分配默认值。defautValue".

    有些人认为这种行为令人困惑,认为它会导致难以发现的错误,并建议使用in运算符

    value = ('prop' in obj) ? obj.prop : defaultValue


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 557 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信