jquery源码阅读知识储备(1)
2011-02-03 01:02
471 查看
(function( window, undefined ) { ... // code goes here })(window);
为什么会有一个名为 undefined 的形参呢?
原来,Javascript 中的 undefined 并不是作为关键字。因此可以允许用户对其赋值。
var undefined = 'myValue';
如此一来,假如 jQuery 中使用下面的写法:
(function( window ) { ... // code goes here })(window);
必然造成中间代码里的 undefined 遭到污染。因为在默认情况下,对于一个未定义的变量,它的值应该是 undefined,假如用户使用形如
var undefined = 'myValue';// 或者
window.undefined = 'myValue';
的代码进行赋值,那么,jQuery 中的 undefined 的值就变成了用户指定的值(这里是字符串 ‘myValue’)。这样会造成 jQuery 内部异常。
而 jQuery 采用的这种写法,就很好的避免了这个问题。
在执行匿名函数的时候,只传递一个参数 window, 而不传递 undefined,那么函数体中的 undefined 局部变量的值,刚好就是 undefined. 甚为巧妙啊。
我觉得这是一个比较好的技巧吧,看看我的测试代码:
var t2 = 12; var t1 = 16; function show(t1,t2){ alert(t1); alert(t2); } show(66);//outputs:"66",undefined
相关文章推荐
- jquery源码阅读知识储备(6)typeof 和 instanceof的结合使用
- jquery源码阅读知识储备(10)javascrpt中的数字(待续)
- jquery源码阅读知识储备(5)call方法和apply方法接触
- jquery源码阅读知识储备(11)javascrpt中的数字比较
- jquery源码阅读知识储备(11)数学方法(四舍五入)
- jquery源码阅读知识储备(3)exec() 方法和match方法
- jquery源码阅读知识储备(4)关于js中if的解惑
- jquery源码阅读知识储备(5)call方法和apply方法接触
- jquery源码阅读知识储备(7)JS函数中的argument属性
- jquery源码阅读知识储备(9)javascrpt中的函数知识(待续)
- jquery源码阅读知识储备(3)exec() 方法和match方法
- jquery源码阅读知识储备(4)关于js中if的解惑
- jquery源码阅读知识储备(2)js中等号的秘密
- jquery源码阅读知识储(8)Javascript引用和作用域的理解
- 阅读 jQuery 源码的18个惊喜
- jquery源码阅读知识储备(9)javascrpt中的闭包和Currying(待续)
- 简便使用jQuery-源码阅读全局架构设计的理解
- jQuery1.5.1 animate方法源码阅读
- jQuery源码阅读(五)---init函数
- jQuery-1.0.0源码阅读