分析(function(window, undefined) {})(window)
有的时候,我们会在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 );
分析(function(window, undefined) {})(window)的更多相关文章
- jquery源码中的(function(window, undefined){})(window)【转】
		(function( window, undefined ) {})(window);这个,为什么要将window和undefined作为参数传给它? (function( $, undefined ... 
- JS 关于(function( window, undefined ) {})(window)写法的理解
		JS 关于(function( window, undefined ) {})(window)写法的理解 [网络整理] (function( window, undefined ) {})(windo ... 
- jquery 中 (function( window, undefined ) {})(window)写法详解(转)
		最常见的闭包 (Closure) 范式大家都很熟悉了: 123 (function() {// ...})(); 很简单,大家都在用.但是,我们需要了解更多.首先,闭包是一个匿名函数 (Anonymo ... 
- JavaScript文件中; !function (win, undefined) {}(window);的意义
		+function (){}-function (){}!function (){}~function (){}(function (){})() 这种写法可以保证匿名函数立即运行且运行一次 传入的 ... 
- 转载  +function ($) { "use strict";}(window.jQuery);全面分析
		转载 https://www.cnblogs.com/cndotabestdota/p/5664112.html +function ($) { "use strict";}(wi ... 
- 关于jQuery源码中(function(window,undefined){//dosomething()})(window)写法解释
		一.首先是最常见的闭包 (Closure) 范式自执行函数的写法,这里用匿名函数封装(构造块级作用域),避免了匿名函数内部的代码与外部之间发生冲突(如使用了相同的变量名). (function() { ... 
- jQuery 1.4.4 中 function( window, undefined ) 写法原因
		读 jQuery 1.4.4 版本代码的时候,发现下面的写法: (function( window, undefined ) { ... // code goes here })(window); w ... 
- 关于 jQuery中 function( window, undefined ) 写法的原因
		今天在读 jQuery 源码的时候,发现下面的写法: (function(window,undefined){ ...// code goes here })(window); window 作为参数 ... 
- ;(function( $, window, undefined ){    }(jQuery,window))为何需要往里面传$,window,undefined这些参数
		(function( $, jQuery , undefined ) {})(jQuery); 为什么要将window和undefined作为参数传给它? 因为 ecmascript 执行JS代码是从 ... 
随机推荐
- quartz(转)
			1. CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 ... 
- python里的splitlines具体解释
			Python的split方法函数能够切割字符串成列表,默认是以空格作为分隔符sep来切割字符串. In [1]: s = "www jeapedu com" In [2]: ... 
- [翻译]怎么写一个React组件库(一)
			本文同步发布于知乎专栏 https://zhuanlan.zhihu.com/p/27401329,喜欢本文的就去知乎点个赞支持下吧- 引言 该系列文章将通过创建一个组件库来引导你学习如何构建自己的组 ... 
- ES6新特性2:变量的解构赋值
			本文摘自ECMAScript6入门,转载请注明出处. ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring).不仅适用于var命令,也适用于let和c ... 
- jenkins 构建触发器  Poll SCM 和 Build periodically区别
			Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作.我的配置如下: */5 * * * * (每5分钟检查一次源码变化) Bu ... 
- 构建Vue开发环境
			1.开发环境的准备工作 IDE 可以选择WebStom或者VisualStudio Code Node.js的安装 node + npm 调试环境 Google Chrome + Vue.js 2.什 ... 
- 【jq】JQuery对select的操作
			下拉框 <select id="selectID" name="selectName"> <option vlaue="1" ... 
- Xcode解决“Implicit declaration of function 'XXX' is invalid in C99” 警告或报错
			1.Build Setting>>>C Language Dialect,然后选择GNU99[-std=gnu99] (选择看项目实际要求). 2.Build Setting> ... 
- block本质探寻四之copy
			说明: <1>阅读本文,最好阅读之前的block文章加以理解: <2>本文内容:三种block类型的copy情况(MRC).是否深拷贝.错误copy: 一.MRC模式下,三种b ... 
- mac上ssh工具,包含简易的文件传输功能
			最近需要在mac上连ssh,但是之前在mac上用的都是简易的SSH Shell,没有找到传输文件的功能. 这时候就非常想念win上的winscp,有个界面,传点东西还是很直观的. 几经搜寻,终于找到一 ... 
