1、js全局变量污染问题;
解决JS全局变量污染的问题,关键还是要实现模块化编程。
实现要点:
1、每个文件只定义一个全局变量,该变量默认为空对象,如果全局变量已经存储抛出异常。
2、全局变量做为文件对外暴露的总出口,需要暴露的方法或者变量挂载到全局变量属性即可。
例子:
demo.html
<!DOCTYPE html>
<html lang="en">
<header>
</header>
<button id="id">id</button>
<script src="sample/math.js" async></script>
<script src="sample/util.js" async></script>
<script src="sample/main.js" async></script>
</html>
//main.js
main=this.main?(()=>{throw new Error()})():{};
(function(){
window.οnlοad=function(event) {
main.total=0;
for(var i=0;i<5;i++){
math.inc()
}
util.log(main.total)
}
})(); //匿名函数
// math.js
math=this.math?(()=>{throw new Error()})():{};
(function(){
math.inc=function(){
main.total++
}
})();