function m1(){
//...
}
function m2(){
//...
}
这种写法都说会污染全局变量,那么具体会产生哪些问题呢?是会有漏洞吗?
尽量做到没有命名冲突,不修改js的函数,逻辑尽量简单还会出现问题吗?
function m1(){
//...
}
function m2(){
//...
}
这种写法都说会污染全局变量,那么具体会产生哪些问题呢?是会有漏洞吗?
尽量做到没有命名冲突,不修改js的函数,逻辑尽量简单还会出现问题吗?
13 回答13k 阅读
7 回答2.1k 阅读
3 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
6 回答1.2k 阅读✓ 已解决
6 回答1.1k 阅读
3 回答1.3k 阅读✓ 已解决
我想,这个是在说模块化的问题吧。
例如,你有两个.js。
1.js:
2.js:
如果你在html中先载入1.js,再载入2.js,那么你就会看到两次"f() in 2.js"。
因为后载入的2.js把f重新定义了。
要比较实际的例子的话,可以想像1.js需要分割字符串,2.js需要分割数组,然后两个作者都写了个split函数,那肯定有一个模块要坏掉了
或者更糟,没有坏掉,但因为些奇怪的配搭而做了些意想不到的事,例如把密码当做AJAX发了出去之类的
解决方法是这样写:
1.js:
2.js:
把函数定义在闭包里,f这个名字只在闭包的环境里使用,不会覆盖全局环境。