Uncaught TypeError: Cannot read properties of undefined (reading ‘XXX’)

相信在执行js代码时,常常会遇到这种情况,但自己明明定义和加载了该对象,为什么还是会报错呢?其实有很大一部分的原因就是因为在执行该对象的时候,引入该对象的js文件还没加载完毕。

解决方案:

js文件上移,放到head里面,保证js文件加载后再执行对象。这个方法相信大家都会,但结果却不尽如人意。

最终解决方案:

使用 defer 属性

<!-- defer 表示延迟执行,直到文档解析完成,且按顺序执行 -->
<script defer src="/xxx.js"></script>
<script defer>
    // 这个脚本也会延迟执行,并且在上一个 defer 脚本之后
</script>