最近調(diào)試JS代碼的時(shí)候,總是報(bào)錯(cuò)Script error.filename:lineno:0,而且IOS才報(bào)錯(cuò),安卓并不報(bào)錯(cuò),連出錯(cuò)行都沒(méi)有,無(wú)法定位具體的代碼,很難找到錯(cuò)誤原因,經(jīng)過(guò)多翻調(diào)試,最后對(duì)出現(xiàn)這個(gè)錯(cuò)誤提示進(jìn)行一個(gè)匯總。
1、未定義的變量直接用來(lái)運(yùn)算,如:var Lon = '<img src="' + thumb + '">';,此時(shí),如果thumb之前并未定義,那么就會(huì)報(bào)錯(cuò),這種情況常見(jiàn)于一些本以為是全局變量,最后并未定義成全局變量的情況;又或者全局變量是在異步操作中定義的,如果是這種情況,那就很有可能會(huì)出現(xiàn)偶爾性的報(bào)錯(cuò) Script error.filename:lineno:0,偶爾又沒(méi)事。
2、if(typeof(thumb)==='undefined'),不建議用這種方法判斷變量是否已經(jīng)定義,typeof是表達(dá)式,并不是函數(shù),建議使用if(typeof thumb=='undefined'),而且,typeof thumb得到的結(jié)果是字符串類(lèi)型的數(shù)據(jù),如:boolen,array,object等,實(shí)質(zhì)上是"array","object"。
總結(jié)出來(lái)一點(diǎn)就是,全局變量使用的時(shí)候要注意有效性。
技術(shù)支持: