我希望保护我的函数不受null-ish值的影响,只有在存在“已定义”值时才会继续。
在looking around之后,解决方案建议加倍等于未定义:if (something == undefined)
。此解决方案的问题是您可以声明未定义的变量。
所以我目前的解决方案是检查null if(something == null)
,它隐含地检查undefined。如果我想捕捉附加值假值,我会检查if(something)
。
请参阅此处的测试:http://jsfiddle.net/AV47T/2/
现在我错过了什么?
的Matthias
答案 0 :(得分:8)
标准的JS后卫是:
if (!x) {
// throw error
}
!x
会抓住任何undefined
,null
,false
,0
或空字符串。
如果您想检查某个值是否有效,那么您可以这样做:
if (Boolean(x)) {
// great success
}
在这篇文章中,如果x是但是 undefined
,null
,false
,0
或空字符串,则会执行该块
-tjw
答案 1 :(得分:7)
我知道 唯一可以防范真正未定义变量(意味着具有从未在任何地方定义过的变量名称)的唯一安全方法是检查typeof
:
if (typeof _someUndefinedVarName == "undefined") {
alert("undefined");
return;
}
其他任何内容(包括if (!_someUndefinedVarName)
)都将失败。
基本示例:http://jsfiddle.net/yahavbr/Cg23P/
删除第一个区块,你会得到:
未定义_someUndefinedVarName
答案 2 :(得分:2)
最近才发现使用'&&'作为JS中的守卫操作员。没有更多的If语句!
var data = {
person: {
age: 22,
name: null
}
};
var name = data.person.name && doSomethingWithName(data.person.name);
答案 3 :(得分:0)
三元救援!
(i) =>
i == 0 ? 1 :
i == 1 ? 2 :
i == 2 ? 3 :
null