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

匿名 (未验证) 提交于 2019-12-02 21:53:52

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

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

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

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

 

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

对js进行压缩的时候

均可以替换成其他简写字符,从而减少文件大小,因为他们被视为局部变量使用。

(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)^

再来一个

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

window.undefined和undefined·为什么要变成了undefined了呢?<-_<-

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 );

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!