一个文件中引用两个js文件,a.js
和b.js。
其中a.js和b.js文件中,有很多名称相同的函数和变量。
例如a.js中有:
var started = false;
var startX, startY;
function doMouseDown(event) {
startX = event.pageX;
startY = event.pageY;
started = true;
}
var c = document.getElementById('s');
c.addEventListener("mousedown", doMouseDown, false);
b.js文件中也有很多类似的代码:
var started = false;
var startX, startY;
function doMouseDown(event) {
startX = event.pageX;
startY = event.pageY;
started = true;
}
var c = document.getElementById('a');
c.addEventListener("mousedown", doMouseDown, false);
运行之后,会有很多冲突,怎么才能避免这种情况发生呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
把他们用函数包起来。
两个文件下载好后,解析的时候都在同一个
javascript
顶级作用域下面 ,相当于一个js
文件放了重复了两遍相同代码,不冲突才怪....解决方法是:
DOM
的,所以要DOM Ready
下楼主应当蛋疼的是,如果
a
文件和b
文件中还有互相引用的数据,那该怎么办?简单的解决办法是用命名空间来控制,也就是命名个对象来控制作用域。
复杂就用AMD或者CMD的模块加载器来实现了。
比如
require js
或者seajs
既然是一样的为什么不能保留一份服用呢?
想低耦合的话还可以试试各自封装成对象然后用事件来触发。
首先,题主的代码可复用性太差,明明两段相似的代码,为什么要复制两遍啊!
其次,用匿名函数立即执行的办法来包裹代码,保证不污染全局空间。
偷懒直接用jQuery的写法了。