zoukankan      html  css  js  c++  java
  • 面向过程的代码请不要拆分成多个脚本

    在一次前端开发过程中本人发现一个函数死活就是没有执行,我在里面打点、输出,都呈现未执行的结果。本人在确定这个函数内部代码以及外部调用的方式完全正确(排除this的问题)之后,自己直接拷贝了一份并改了一下这个代码的名称再区调用,这时候它总算是执行了。这就很令人纳闷——之前的不能被执行,该了个函数名就能够被执行了,这是为什么呢?


    我还原到原来的代码,利用IDE提供的便利点击F12跳转到那个改名之前的“未被执行的函数”的具体实现,发现跳转过去的完全不是A.js这个脚本中的那个实现,而是B.js脚本中的那个实现!到此,所有的迷惑终于得到解答!


    值得注意的是,A.js和B.js虽是不同的脚本但他们是同时被加载在页面当中去的,因此会出现内部函数在调用的时候因为异步而产生的无序性,加之当两个脚本中具有同名同参的函数时,js更不清楚到底要执行哪一个,会出现错乱,导致让我们感觉很正常的代码实际上是有很大的错误的。最好的方式是面向对象的解决思路,比较笨的方法是直接将这两个脚本中出现重名的函数名改一下即可。将一个面向过程的长脚本拆开并不是面向对象,更不是去耦合,有时候(像这种场景)是为自己以及后面的开发人员添加了不必要的维护难度——两个函数重名、内部实现方式分别两样,但他们所依附的两个脚本实际上是同时加载,导致函数重新定义,这个问题往往会在开发过程中因“不同脚本”+“不同函数实现”而遭到忽视。




    作者:艾孜尔江·艾尔斯兰
    转载或使用请务必标明出处!

  • 相关阅读:
    SQLHELPER C#
    SQL存储过程实例
    gridview css 样式及分页
    触发器
    MSsql存储过程
    解决在pc上用apk downloader插件下载谷歌play商店android应用出现的ssl错误
    VBScript输出显示双引号
    asp课堂更改读写权限值的实现
    1421. Credit Operations 夜
    sdut 1944 Flash Mob 夜
  • 原文地址:https://www.cnblogs.com/ezhar/p/13681232.html
Copyright © 2011-2022 走看看