我有一个数组数组,一些内部数组还有另一个嵌套数组。有些没有。我循环遍历顶级数组元素,如果有一个内部数组,我循环遍历它们。如果没有,我没有。或者我认为。
由于某种原因,当我的迭代发现一个没有嵌套数组的数组时,我的控制台显示“类型错误”未定义......这在技术上是正确的,因为没有定义嵌套数组。但是我认为我的嵌套 if 语句不允许对此进行评估。有什么想法吗?
例如动画[0][3] 是一个数组,但动画[1][3] 是未定义的。所以在我的 if 循环中我有一个嵌套
var a = animations.shift();
if ( a[3] )
{
console.log( 'a[3] is: ' + a[3] )
}
else
{
return;
}
我读到,如果 a[3] 存在,则将其记录到控制台,如果不逃逸而不打印到控制台...但是我的控制台继续产生未定义的评估。那是因为简单地测试它的存在会返回一个未定义的错误吗?每次遇到没有嵌套数组的数组时,如何阻止弹出此错误?
谢谢。
var animations = [
['.pcba','fadeIn', [1000], [
['.pcb_cad', 'fadeIn', [1000] ]
]
],
['.pcba', 'delay', [2000] ],
['.pcba','fadeOut', [1000], [
['.heatGenComps', 'fadeIn', [1000] ],
['.arrows', 'fadeIn', [1000] ]
]
],
['.heatGenComps', 'delay', [2000] ],
['.heatGenComps', 'fadeOut', [1000], [
['.arrows', 'fadeOut', [1000] ],
['.pcb_cad_cfd', 'fadeIn', [1000] ],
['.wePredOpTemps', 'fadeIn', [1000] ]
]
],
];
我像这样遍历它们:
iter();
function iter(){
if (!animating) return;
var a = animations.shift();
if (a) {
var el = a[0];
var fn = a[1];
var args = a[2];
$.fn[ a[1] ].apply( $( a[0] ), a[2] ).promise().done(iter);
if ( a[3] )
{
var secondary = a[3];
console.log( 'a[3] is: ' + a[3] );
secondaryAnime();
function secondaryAnime(){
b = secondary.shift();
console.log('secondary is: ' + b );
$.fn[ b[1] ].apply( $( b[0] ), b[2] );
secondaryAnime();
};
}
else
{
return;
}
}
else
{
}
};