你如何在JavaScript中实现一个保护条款?

时间:2011-03-17 12:40:52

标签: javascript undefined

我希望保护我的函数不受null-ish值的影响,只有在存在“已定义”值时才会继续。

looking around之后,解决方案建议加倍等于未定义:if (something == undefined)。此解决方案的问题是您可以声明未定义的变量。

所以我目前的解决方案是检查null if(something == null),它隐含地检查undefined。如果我想捕捉附加值假值,我会检查if(something)

请参阅此处的测试:http://jsfiddle.net/AV47T/2/

现在我错过了什么?

的Matthias

4 个答案:

答案 0 :(得分:8)

标准的JS后卫是:

if (!x) {
    // throw error
}

!x会抓住任何undefinednullfalse0或空字符串。

如果您想检查某个值是否有效,那么您可以这样做:

if (Boolean(x)) {
    // great success
}

在这篇文章中,如果x是但是 undefinednullfalse0或空字符串,则会执行该块

-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