检查数组是否已定义且具有长度

时间:2013-12-02 09:21:37

标签: javascript if-statement performance

我有一个像这样的javascript查询,用于检查undefined数组和empty数组:

if(array){
    if(array.length > 0){
       function1();
    }else{
       function2();
    }
}else{
    function2();
}

我尝试过像

这样的东西
if(array && ( array.length > 0)){
    function1();
}else{
    function2();
}

但没有骰子,收到variable is undefined错误。根据{{​​3}}做if(variable)对于这个用例来说效果很好,但这只适用于字符串而不是数组。在这种情况下,有没有办法在javascript中做二合一?

1 个答案:

答案 0 :(得分:5)

  

...我得到一个变量是未定义的错误

这意味着array未在任何地方声明 。为了防范这种情况,您可以使用typeof

if (typeof array !== "undefined" && array && array.length > 0)

Live Example | Source

完全未定义的符号与解析为包含值undefined.的变量的已定义符号之间存在差异,但是为真。您可以安全地使用typeof来处理任何事情,甚至是在任何地方完全未声明的内容,但如果您尝试阅读未在任何地方声明的内容的,您将获得{{1>} {1}}说它不存在。