Javascript中如何防止函数或者变量被重复定义?

或者说,如何在重复定义的时候,自动检测并忽略?

阅读 7.7k
2 个回答

分两个方面

如何不覆盖别人的

  • 不要使用全局变量
  • 如果必须要用,不用会死

    1. 如果在amd/cmd下,那最好,不需要任何全局变量,用define来暴露你的接口
    2. 如果你是在写框架,探测一下如果是amd/cmd环境,那也别用全局变量,用define。如果不是,那么用你的框架的名字(别太普通)写在全局,但同时别忘了保留原来的值,提供noConflict方法
    3. 如果你在写业务,那么不妨用一个公司名之类的名字做全局变量,然后其他所有东西尽可能的挂进去

如何不被别人的覆盖

用IIFE建立自己的作用域,依赖别人的全局变量的时候小心管理,最好通过var Name=window.Name;或者(function(Name){})(Name)之类的形式引用。同时具有加速/标记依赖了全局变量/方便对方全局变量修改等各种好处

创建一个独立的作用域,类似 (function(){})();
这样使用里面的全局函数也不会干扰了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题