检查未定义会导致未定义的错误

时间:2016-08-30 20:19:07

标签: javascript jquery

尝试检查某些变量是否包含内容,因为它们会抛出错误并在不执行时破坏ajax函数。问题是只检查data[2][0]是否包含某些内容会导致以下错误:

  

未捕获的TypeError:无法读取属性' 0'未定义的

我非常不愿意在之前阶段检查这一点。如何检查data[2][0]是否已定义,而不会导致实际检查中断我的js?

代码:

//ajax ^
success: function(data){
    var xp = data[0][0]; //Contains a string
    var yp = data[1][0]; //Contains a string
    var zp = data[2][0]; //Is not set, fails here

    if(xp === ''){ //Tried using null & undefined here aswell
       //Do nothing   
    } else {
        var one = data[0][0];
        var oneH = data[0][1];
        var oneS = data[0][2];
    }
    if(yp === ''){
        //Do nothing
    } else {
        var two = data[1][0];
        var twoH = data[1][1];
        var twoS = data[1][2];
    }
    if(zp === ''){
        //Do nothing  
    } else {
        var three = data[2][0];
        var threeH = data[2][1];
        var threeS = data[2][2];
    }
//ajax continues v

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

您应该使用''检查变量是否未定义,而不是使用if (typeof myVar === 'undefined') 的等式检查:

Array.isArray(myVar)

您还可以使用[TestCase(typeof(SomeException))] [TestCase(typeof(SomeOtherException))] public void UnitTest(Type exceptionType) { Assert.That(()=>_businessService.Setup(x=>x.DoWork), Throws.InstanceOf(exceptionType)); }

检查变量是否为数组

答案 1 :(得分:1)

我会先检查data[2]是否存在,然后再重新定义zp

var zp = data[2];
if (zp) zp = zp[0];