javascript提示:Uncaught ReferenceError: XXX is not defined的意思是函數(shù)XXX()沒有被定義。js一般出現(xiàn)Uncaught ReferenceError: XXX is not defined這樣的錯誤,大概率是你把函數(shù)放在了window.onload里面。
出現(xiàn)這個問題的原因是:
1.window.onload事件是在整個頁面包括dom結(jié)構(gòu)、圖片等等全部加載完成之后才會觸發(fā)。把函數(shù)寫在這里邊是為了防止html還沒加載完就執(zhí)行了代碼,但是如果你寫在一個自己定義的函數(shù)中,那函數(shù)中的代碼是在你調(diào)用這個函數(shù)的時候才會執(zhí)行的。
2.如果將你自己的函數(shù)寫在window.onload里,那么這個函數(shù)的作用域就僅僅是window.onload中,該函數(shù)是在一個匿名函數(shù)內(nèi)部的局部函數(shù),并不是全局函數(shù),所以你調(diào)用時會顯示未定義,類似java那個內(nèi)部類。
3.HTML加載時由上往下的,在HTML加載的時候,遇到function關(guān)鍵字,聲明一個函數(shù)的時候,就會在內(nèi)存中開辟一個新的空間來對函數(shù)進(jìn)行存儲,方便以后進(jìn)行調(diào)用。
所以,當(dāng)將function XXX()寫到window.onload()=function(){}內(nèi)部的時候,需要整個頁面加載完成的之后,才聲明這個函數(shù),也就意味著,當(dāng)HTML加載到調(diào)用函數(shù)的時候,window.οnlοad=function(){}里面的函數(shù)XXX還沒有被聲明,這時候內(nèi)存中就找不到function XXX(),于是會報錯。
我補(bǔ)充一點(diǎn):
是會html是自上而下加載,出現(xiàn)Uncaught ReferenceError: XXX is not defined,極大可能是js引用放在前面例如:
<!DOCTYPE html>
<html lang="en">
<head>
? <meta charset="UTF-8">
? <meta name="viewport" content="width=device-width, initial-scale=1.0">
??<script src="./js/bootstrap.min.js"></script>
? //當(dāng)自定義js文件main.js放在頭部是極有可能出現(xiàn)Uncaught ReferenceError: XXX is not? ? defined, 正確的是應(yīng)該放在body下面
? <script src="./js/main.js"></script>?
? <title>Document</title>
</head>
<body>
</body>
</html>
解決方法有兩種:
1.將function XXX()移到window.onload()=function(){}外面,則HTML加載到<head></head>的時候就會聲明函數(shù)XXX()了,所以進(jìn)行綁定的時候就能夠在內(nèi)存中找到XXX()并進(jìn)行調(diào)用。
2.用var XXX在window.onload()=function(){}外面先進(jìn)行聲明。作用域發(fā)生了變化,就可以進(jìn)行調(diào)用。文章來源:http://www.zghlxwxcb.cn/news/detail-703650.html
來源自:js出現(xiàn)Uncaught ReferenceError: XXX is not defined錯誤的解決辦法-織夢云編程網(wǎng) (dedeyun.com)文章來源地址http://www.zghlxwxcb.cn/news/detail-703650.html
到了這里,關(guān)于js出現(xiàn)Uncaught ReferenceError: XXX is not defined錯誤的解決辦法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!