js里出现Uncaught ReferenceError: XXX is not defined的错误的解决方法
Uncaught ReferenceError: XXX is not defined意思是函数XXX()就没有被定义。
js里出现Uncaught ReferenceError: XXX is not defined的错误,大概率是你把函数放在了window.onload里面。
出现这个问题的原因是:
1.window.onload事件是在整个页面包括dom结构、图片等等全部加载完成之后才会触发。把函数写在这里边是为了防止html还没加载完就执行了代码,但是如果你写在一个自己定义的函数中,那函数中的代码是在你调用这个函数的时候才会执行的。
2.如果将你自己的函数写在window.onload里,那么这个函数的作用域就仅仅是window.onload中,该函数是在一个匿名函数内部的局部函数,并不是全局函数,所以你调用时会显示未定义,类似java那个内部类。
3.HTML加载时由上往下的,在HTML加载的时候,遇到function关键字,声明一个函数的时候,就会在内存中开辟一个新的空间来对函数进行存储,方便以后进行调用。
所以,当将function XXX()写到window.onload()=function(){}内部的时候,需要整个页面加载完成的之后,才声明这个函数,也就意味着,当HTML加载到调用函数的时候,window.onload=function(){}里面的函数XXX还没有被声明,这时候内存中就找不到function XXX(),于是会报错。
解决方法有两种:
1.将function XXX()移到window.onload()=function(){}外面,则HTML加载到的时候就会声明函数XXX()了,所以进行绑定的时候就能够在内存中找到XXX()并进行调用。
2.用var XXX在window.onload()=function(){}外面先进行声明。作用域发生了变化,就可以进行调用。
作者:MaJiaLe
链接:https://www.jianshu.com/p/37bc8fb2b35c
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具