分析(function(window, undefined) {})(window)

有的时候,咱们会在JS框架中看到这行

(function(window, undefined) {})(window) ,它是作什么用的,咱们来分析下它

首先这就是一个匿名函数,当即执行它javascript

(function(window, undefined) {
    // coding
})(window)

 

为这么要这样写,有什么做用

对js进行压缩的时候java

都可以替换成其余简写字符,从而减小文件大小,由于他们被视为局部变量使用。jquery

(function(w, u) {
    // coding
})(w)

 

window: 表示 BOM 浏览器对象模型中的 window 对象浏览器

undefined:对于undefined,由于他不是javascript关键字,容易遭到污染。框架

 

举个例子函数

function foo() {
     var undefined = 10;
     alert(undefined);
}
foo(); // 打印10

再举个例子:测试

 var undefined = 10;
    function foo() {
       alert(undefined);
    }
 foo(); // undefined

为何又变成undefined了呢 ^(0_0)^this

再来一个spa

 var undefined = 10;
    function foo() {
       alert(window.undefined);
       alert(undefined);
    }
 foo(); // undefined

window.undefined和undefined·为何要变成了undefined了呢?<-_<-code

undefined是window的一个属性,是不可写的,因此你在全局做用域改变window这个属性,根本写不进.

 

var fun = function (){
    var undefined = 2;
    console.log(undefined); //2
}
var undefined = 1;
console.log(undefined); //undefined fun();

 

这样就能看的比较直观的了解undefined了

 

固然从随着浏览器的不断升级,浏览器API不断改变从 jquery2.0.3 2013-07-03 13:30 这一版以后,能够发现再也不使用

(function(window, undefined) {})(window)

通过3个测试beta版

逐渐改为了

(function( global, factory ) {

}(this,function(window){}));

这边(this,function(window){})

但有可能致使一个问题,经过this,window可能没有被定义

 

因此让typeof 一下window。

(typeof window !== "undefined" ? window : this, function( window, noGlobal );

相关文章
相关标签/搜索