分析(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代码是从 ...
随机推荐
- 【错误记录】记录蛋疼的 mysql 错误
-- 应用信息表 DROP TABLE IF EXISTS `table_name`; CREATE TABLE `ks_apps_info` ( `id` ) NOT NULL COMMENT 'i ...
- codeforces 293E Close Vertices
题目链接 正解:点分治+树状数组. 点分治板子题,直接点分以后按照$w$排序,扫指针的时候把$w$合法的路径以$l$为下标加入树状数组统计就行了. 写这道题只是想看看我要写多久..事实证明我确实是老年 ...
- C++中重载决议与可访问性检查的顺序
http://blog.csdn.net/starlee/article/details/1406781 对于如下的类: class ClxECS{public: double Test(dou ...
- TensorFlow函数(十)tf.global_variables_initializer()
tf.global_variables_initializer() 此函数是初始化模型的参数 with tf.Session() as sess: tf.global_variables_initia ...
- Odoo发送短信
转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9281581.html 一:阿里云短信服务注册 1:开通短信业务:实名认证的个人用户是免费开通:企业用户需要提供 ...
- ES6新特性2:变量的解构赋值
本文摘自ECMAScript6入门,转载请注明出处. ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring).不仅适用于var命令,也适用于let和c ...
- 集合之List总结
前面LZ已经充分介绍了有关于List接口的大部分知识,如ArrayList.LinkedList.Vector.Stack,通过这几个知识点可以对List接口有了比较深的了解了.只有通过归纳总结的知识 ...
- C语言程序设计I—第十一周教学
第十一周教学总结(12/11-17/11) 教学内容 第4章 循环结构-break continue嵌套循环 4.3 判断素数,4.4求1! + 2! + -. + 100! 课前准备 在蓝墨云班课发 ...
- P1736 创意吃鱼法
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
- 国行ME860刷MIUI3.9.27
刷机前: 系统版本:45.2.3.ME860.ChinaRetail.en.CN Android版本:2.3.4 基带版本:BP_N_01.38.00R WEBtop版本:WT_1.2.0-144_8 ...