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

lue*_*ken 8 javascript undefined

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

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

所以我目前的解决方案是检查null if(something == null),这意味着检查undefined.如果我想捕捉附加值假值,我检查if(something).

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

我现在错过了什么吗?

马蒂亚斯

Tra*_*ebb 8

标准的JS守卫是:

if (!x) {
    // throw error
}
Run Code Online (Sandbox Code Playgroud)

!x会抓住任何undefined,null,false,0,或空字符串.

如果要检查值是否有效,则可以执行以下操作:

if (Boolean(x)) {
    // great success
}
Run Code Online (Sandbox Code Playgroud)

在这一块,如果x是任何执行该块,但 undefined,null,false,0,或空字符串.

-tjw


Sha*_*ard 7

我知道防止真正未定义的变量(意味着具有从未在任何地方定义的变量名称)的唯一安全方法是检查typeof:

if (typeof _someUndefinedVarName == "undefined") {
   alert("undefined");
   return;
}
Run Code Online (Sandbox Code Playgroud)

其他任何事情(包括if (!_someUndefinedVarName))都会失败.

基本示例:http://jsfiddle.net/yahavbr/Cg23P/

删除第一个块,你会得到:

_someUndefinedVarName未定义