变量命名不污染主要分两种情况:
1、jquery/$命名不冲突
2、普通变量
1)虽然是分两种情况但是实质还是一种,都是变量的命名冲突,jquery本身的设计者已经有了解决方案,采用沙箱设计。
看一下jquery的源码,就会发现:
1.外层沙箱以及命名空间$
为了避免声明了一些全局变量而污染,把代码放在一个“沙箱执行”,然后在暴露出命名空间(可以为API,函数,对象):
(function(xxx111){
典型的沙箱设计
})(xxx)
(function( window, undefined ) {
//用一个函数域包起来,就是所谓的沙箱
//在这里边var定义的变量,属于这个函数域内的局部变量,避免污染全局
//把当前沙箱需要的外部变量通过函数参数引入进来
//只要保证参数对内提供的接口的一致性,你还可以随意替换传进来的这个参数
“use strict”;
window.jQuery = window.$ = jQuery;
})( window );
有人会疑问,为什么要第二个参数undefined 。在这里,jquery中有一个针对压缩的小小策略。
先看以下代码:
(function( window, undefined ) {
var a = undefined;
if (a == undefined){blabla…}
….
if (c == undefined) return;
})( window );
经过压缩后ÿ