背景:
前端控制臺報(bào)錯(cuò)is not defined的bug,在一個(gè)頁面渲染的模板里,多個(gè)接口都使用了同一個(gè)模板,但是接口返回的參數(shù)是不同的。有些接口返回了這個(gè)參數(shù),另一些接口可能壓根就沒有這個(gè)參數(shù)。這個(gè)時(shí)候進(jìn)行頁面渲染,調(diào)用了那個(gè)不存在的參數(shù),就報(bào)了is not defined的錯(cuò)。
Is not defined是程序上的錯(cuò),因?yàn)闆]有聲明這個(gè)變量就使用了它導(dǎo)致的報(bào)錯(cuò)。
解決方法:
面對這種情況,不能提前聲明、防止重復(fù)聲明,普通的判空方法會報(bào)錯(cuò),又必須要進(jìn)行判空。這時(shí)候使用typeof XX != ‘undefined’ && XX進(jìn)行判空處理,第一個(gè)是判斷是否定義,第二個(gè)是判斷空值。
那么undefined instanceof XX起效嗎? 答案是仍然會報(bào)錯(cuò)
那么typeof XX != 'null’起效嗎?XX實(shí)際上是undefined,而非null,雖然結(jié)果為true,但是下一步值判空還是會報(bào)錯(cuò)。
原因排查:
其他參考:
https://www.jb51.net/article/240832.htm
↓
Javascript中undefined和not defined有什么區(qū)別?
概念上的解釋:
undefined是javascript語言中定義的五個(gè)原始類中的一個(gè),換句話說,undefined并不是程序報(bào)錯(cuò),而是程序允許的一個(gè)值。
not defined是javascript在運(yùn)行我們的javascript代碼時(shí),遇到?jīng)]有定義就用來運(yùn)算的變量時(shí)爆出來的錯(cuò)誤。文章來源:http://www.zghlxwxcb.cn/news/detail-717526.html
在許多的javascript教程中都介紹有javascript變量即使不定義也可以直接拿來使用,但是請注意,這個(gè)使用是指可以被賦值,但是不可以被運(yùn)算文章來源地址http://www.zghlxwxcb.cn/news/detail-717526.html
XX = 123; //未定義參數(shù)可以被賦值,是可以執(zhí)行的
YY ? true : false ;//未定義參數(shù)不可使用,是is not defined
到了這里,關(guān)于前端控制臺報(bào)錯(cuò)is not defined的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!