什么是更好的解决方案?
if(typeof bla === "undefined" || bla === null)...
或者
if(bla)...
如果我做第二个解决方案,我真的需要检查它是否未定义?
感谢。
答案 0 :(得分:3)
这取决于您对变量的期望。
如果它应该包含一个对象,第二个选项可以正常工作,因为任何对象引用都是真实的。
如果它应该包含一个布尔值,则第二个选项根本不起作用,因为false
将得到与不存在的值相同的结果。
答案 1 :(得分:0)
我真的需要检查它是否未定义?
不,undefined和null都解析为false。第二种选择肯定更好。
答案 2 :(得分:0)
要“检查是否未定义”,最佳解决方案通常是第三个:
function isDef(obj) {
var undefined;
return obj === undefined;
}
这会检查对象是否未定义且不会因typeof
而浪费时间,并且此测试未通过""
,null
,NaN
或{{1}验证为真和你的第二次测试一样。
唯一的缺陷是有人可以覆盖全局0
对象。在ES5严格模式下不可能,但您的代码应该屏蔽它。使用本地undefined
定义隐藏undefined
会为您做到这一点。
此外,通过使用var undefined;
功能,您可以实现更好的便携式缩小和更简单的逻辑。
isDef