我们经常在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个赞
变量可以是 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
添加回答
举报
0/150
提交
取消