关于 jQuery中 function( window, undefined ) 写法的原因
2013-11-15 16:59
330 查看
今天在读 jQuery 源码的时候,发现下面的写法:
window 作为参数传递肯定是没问题, 表示 BOM 浏览器对象模型中的 window 对象。但是这里为什么会有一个名为 undefined 的形参呢?起初的时候很不理解。去技术群请教了一下,才真正理解了这里的原因。
原来,Javascript 中的 undefined 并不是作为关键字(全部Javascript关键字列表)出现的。因此可以允许用户对其赋值。例如:
如此一来,假如 jQuery 中使用下面的写法:
必然造成中间代码里的 undefined 遭到污染。因为在默认情况下,对于一个未定义的变量,它的值应该是 undefined,假如用户使用形如
的代码进行赋值,那么,jQuery 中的 undefined 的值就变成了用户指定的值(这里是字符串 ‘myValue’)。这样会造成 jQuery 内部异常。
而 jQuery 采用的这种写法,就很好的避免了这个问题。在执行匿名函数的时候,只传递一个参数 window, 而不传递 undefined,那么函数体中的 undefined 局部变量的值,刚好就是 undefined. 甚为巧妙啊。
(function(window,undefined){ ...// code goes here })(window);
window 作为参数传递肯定是没问题, 表示 BOM 浏览器对象模型中的 window 对象。但是这里为什么会有一个名为 undefined 的形参呢?起初的时候很不理解。去技术群请教了一下,才真正理解了这里的原因。
原来,Javascript 中的 undefined 并不是作为关键字(全部Javascript关键字列表)出现的。因此可以允许用户对其赋值。例如:
varundefined='myValue';
如此一来,假如 jQuery 中使用下面的写法:
(function(window){ ...// code goes here })(window);
必然造成中间代码里的 undefined 遭到污染。因为在默认情况下,对于一个未定义的变量,它的值应该是 undefined,假如用户使用形如
varundefined='myValue'; // 或者 window.undefined='myValue';
的代码进行赋值,那么,jQuery 中的 undefined 的值就变成了用户指定的值(这里是字符串 ‘myValue’)。这样会造成 jQuery 内部异常。
而 jQuery 采用的这种写法,就很好的避免了这个问题。在执行匿名函数的时候,只传递一个参数 window, 而不传递 undefined,那么函数体中的 undefined 局部变量的值,刚好就是 undefined. 甚为巧妙啊。
相关文章推荐
- 关于jQuery源码中(function(window,undefined){//dosomething()})(window)写法解释
- jQuery 1.4.4 中 function( window, undefined ) 写法原因(function( window, undefined ) {})(window);
- JS 关于(function( window, undefined ) {})(window)写法的理解
- JS 关于(function( window, undefined ) {})(window)写法的理解
- 关于(function( window, undefined ) {})(window)写法的理解
- 关于(function( window, undefined ) {})(window)写法的理解
- jquery 中 (function( window, undefined ) {})(window)写法详解(转)
- JS 关于(function( window, undefined ) {})(window)写法的理解
- JS 关于(function( window, undefined ) {})(window)写法的理解
- JS 关于(function( window, undefined ) {})(window)写法的理解
- jquery 中 (function( window, undefined ) {})(window)写法详解(转)
- JS 关于(function( window, undefined ) {})(window)写法的理解
- JS 关于(function( window, undefined ) {})(window)写法的理解
- JS中关于(function( window, undefined ) {})(window)写法的理解
- 详解jquery插件中(function ( $, window, document, undefined )的作用
- 为什么jQuery中会这样写:(function(window, undefined))(window)
- (function($, window, document) {}) jQuery 调用解决与其他javascript库冲突的写法
- ;(function($,window,undefined){})(jQuery,window)详细解析————借助B5教程解析自己整理了一下
- 详解jquery插件中;(function ( $, window, document, undefined )的作用
- 详解jquery插件中;(function ( $, window, document, undefined )的作用