面向过程的代码请不要拆分成多个脚本
在一次前端开发过程中本人发现一个函数死活就是没有执行,我在里面打点、输出,都呈现未执行的结果。本人在确定这个函数内部代码以及外部调用的方式完全正确(排除this的问题)之后,自己直接拷贝了一份并改了一下这个代码的名称再区调用,这时候它总算是执行了。这就很令人纳闷——之前的不能被执行,该了个函数名就能够被执行了,这是为什么呢?
我还原到原来的代码,利用IDE提供的便利点击F12跳转到那个改名之前的“未被执行的函数”的具体实现,发现跳转过去的完全不是A.js这个脚本中的那个实现,而是B.js脚本中的那个实现!到此,所有的迷惑终于得到解答!
值得注意的是,A.js和B.js虽是不同的脚本但他们是同时被加载在页面当中去的,因此会出现内部函数在调用的时候因为异步而产生的无序性,加之当两个脚本中具有同名同参的函数时,js更不清楚到底要执行哪一个,会出现错乱,导致让我们感觉很正常的代码实际上是有很大的错误的。最好的方式是面向对象的解决思路,比较笨的方法是直接将这两个脚本中出现重名的函数名改一下即可。将一个面向过程的长脚本拆开并不是面向对象,更不是去耦合,有时候(像这种场景)是为自己以及后面的开发人员添加了不必要的维护难度——两个函数重名、内部实现方式分别两样,但他们所依附的两个脚本实际上是同时加载,导致函数重新定义,这个问题往往会在开发过程中因“不同脚本”+“不同函数实现”而遭到忽视。
作者:艾孜尔江·艾尔斯兰
转载或使用请务必标明出处!
__EOF__

本文链接:https://www.cnblogs.com/ezhar/p/13681232.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文来自博客园,作者:艾孜尔江,转载请注明原文链接:https://www.cnblogs.com/ezhar/p/13681232.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现