JS异常处理:Uncaught TypeError: Cannot read property 'LazyLoad' of null

版权声明:本文为博主(chunlynn)原创文章,转载请注明出处 https://blog.csdn.net/chenchunlin526/article/details/80279243

Uncaught TypeError: Cannot read property 'LazyLoad' of null


1、问题描述:

js中定义的对象与对象中的属性如下:

/**
 * 四个tab对应四个数据加载器
 * searchResult.js
 */

var dataLoaders = [null, commonListLoader, summaryListLoader, imageListLoader, fullviewLoader];

dataLoaders[2]表示的就是summaryListLoader这个对象。

//定义对象中国的属性load、lazyLoad、lazyLoaded

var summaryListLoader = { //tab2

load : function(records) {

              //省略....

        },

        lazyLoad : function(){

            //省略....

        },

       lazyLoaded : false

}

2、调用报错

在一个js循环调用中执行下面这句报错:(本意是想调用 summaryListLoader的lazyLoad(..)函数)

dataLoaders[i].lazyLoad(recordsTmp,picdata);

js报这个错误,意思是当前dataLoaders[i]这个对象的属性lazyLoad属性没有取到。首先我确保了dataLoaders对应的对象确实有这个属性。

分析:一般就是dataLoaders[i]这个值不对,更进一步,就是i取值可能超过范围了,比如我想取dataLoaders[2]的值,实际上js代码中循环后,一个细节没处理好,导致i循环成5了,此时dataLoaders[5]肯定是错误的。而dataLoaders[1]--dataLoaders[4]才是正确的可取值。


3、解决:

1、核对属性名称是否写对,如果该属性是函数,核对函数参数个数是否正确。

2、先调试看调用属性的这个对象是否正确取到了,比如我代码里是这么取值的,dataLoaders[i].lazyLoad(recordsTmp,picdata);结果说 Cannot read property 'LazyLoad' of null. 所以问题就是dataLoaders[i]的值没有正确获取到,通过debugger,发现我实际得到是 dataLoaders[5].lazyLoad(recordsTmp,picdata);,而这个已经超过我定义数组的范围了。所把i值取对,比如为2,dataLoaders[5].lazyLoad(recordsTmp,picdata);就是正确的调用,结果就对了。

猜你喜欢

转载自blog.csdn.net/chenchunlin526/article/details/80279243