有的时候,我们会在JS框架中看到这行 (function(window, undefined) {})(window) ,它是做什么用的,我们来分析下它 首先这就是一个匿名函数,立即执行它 (function(window, undefined) { // coding })(window) 为这么要这样写,有什么作用 对js进行压缩的时候 均可以替换成其他简写字符,从而减少文件大小,因为他们被视为局部变量使用. (function(w, u) { // coding })(w) window:…
(function( window, undefined ) {})(window);这个,为什么要将window和undefined作为参数传给它? (function( $, undefined ) {})(jQuery); 同理 因为 ecmascript 执行JS代码是从里到外,因此把全局变量window或jQuery对象传进来,就避免了到外层去寻找,提高效率.undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined. 还…
JS 关于(function( window, undefined ) {})(window)写法的理解 [网络整理] (function( window, undefined ) {})(window); 这个,为什么要将window和undefined作为参数传给它? (function( $, undefined ) {})(jQuery); 同理 因为 ecmascript 执行JS代码是从里到外,因此把全局变量window或jQuery对象传进来,就避免了到外层去寻找,提高效率.und…
最常见的闭包 (Closure) 范式大家都很熟悉了: 123 (function() {// ...})(); 很简单,大家都在用.但是,我们需要了解更多.首先,闭包是一个匿名函数 (Anonymous function), 即是 (function() {}) 这部分.之所以要给 function 添加括弧是为了让它形成一个表达式 (expression), 有了表达式,并且确定它的类型是个函数 (Function 实例), 就可以直接调用它.所以,后面的一对括弧是可以工作的,它的意义是:我…
+function (){}-function (){}!function (){}~function (){}(function (){})() 这种写法可以保证匿名函数立即运行且运行一次 传入的 window 对象从全局变成了局部对象 优点有 1. 运行更快了2. 可以随意改名 比如 a, 这样便于压缩3. 可以传入其他库而不导致冲突 举例子(function ($, w, d, undefined){ $(document).addClass('test'); })(jQuery, win…
转载 https://www.cnblogs.com/cndotabestdota/p/5664112.html +function ($) { "use strict";}(window.jQuery);全面分析   +function ($) { "use strict"; }(window.jQuery); 怎么理解? 匿名函数闭包 我们先来理一理函数表达式和函数声明的区别 函数表达式: 函数可以是匿名函数,也可以有函数名,但是这种函数无法直接使用,只有通过表…
一.首先是最常见的闭包 (Closure) 范式自执行函数的写法,这里用匿名函数封装(构造块级作用域),避免了匿名函数内部的代码与外部之间发生冲突(如使用了相同的变量名). (function() {// ...})(); 二.自执行函数和其他函数类似,都可以传入参数:jQuery源码中将window作为一个参数传入, window是DOM对象模型的最顶层对象,把全局变量传进来,就避免了到外层去寻找,提高效率: (function(window) {// ...})(window); 当然你也可…
读 jQuery 1.4.4 版本代码的时候,发现下面的写法: (function( window, undefined ) { ... // code goes here })(window); window 肯定是没问题, 表示 BOM 浏览器对象模型中的 window 对象.但是这里为什么会有一个名为 undefined 的形参呢?起初的时候很不理解.去技术群请教了一下,才真正理解了这里的原因. 原来,Javascript 中的 undefined 并不是作为关键字(全部Javascrip…
今天在读 jQuery 源码的时候,发现下面的写法: (function(window,undefined){ ...// code goes here })(window); window 作为参数传递肯定是没问题, 表示 BOM 浏览器对象模型中的 window 对象.但是这里为什么会有一个名为 undefined 的形参呢?起初的时候很不理解.去技术群请教了一下,才真正理解了这里的原因. 原来,Javascript 中的 undefined 并不是作为关键字(全部Javascript关键字…
(function( $, jQuery , undefined ) {})(jQuery); 为什么要将window和undefined作为参数传给它? 因为 ecmascript 执行JS代码是从里到外,因此把全局变量window或jQuery对象传进来,就避免了到外层去寻找,提高效率.undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined. ; (function( window ) { alert(window.unde…