js全局变量污染问题

tech2026-03-06  1

js全局变量污染的产生场景

js中全局变量污染的场景,当代码非常长,开发周期长,如果不想办法去解决或者防止全局变量污染的问题,就会造成二次赋值同一个之前定义过的变量。(由于项目开发周期过长你又不记得之前是否定义过这个变量,在赋值之前定义过的变量的时候就污染了全局变量。)

我们解决方案如下↓

1. 使用namespace模式解决全局环境污染。

namespace模式就是把变量装在对象里面,在全局定义一个对象,然后把所有的你想写的全局变量定义在对象内部。你可以随时打印对象查询你是否定义过某个变量。 var obj={ a:“1”, b:“2} namespace模式的缺点:就是由于我们把变量装在了一个对象当中,对象内部的东西是可以通过操作对象的方式进行增删改查的,不安全。

2. IIFE模式:(匿名函数自调用【闭包】)方式解决全局污染

```javascript 3. (function(window){ 4. let msg="module4"; 5. function foo(){ 6. console.log("foo()",msg); 7. } 8. window.module4=foo; 9. // 我们在window对象上写入一个属性名为module4属性值为foo函数 10. }) 我们调用foo函数 写法一window.module4() 写法二module4()因为window可以省略

最新回复(0)