匿名函数的undefined形参

在jQuery代码中,jQuery是定义在闭包内部的,然后我们发现闭包中有一个名为undefined的形参。

(function( window, undefined ) {})(window)

实际上只传入了window参数,那么undefined形参有什么作用?

事实上,在javascript中undefined不是一个关键字,也就是说用户可以对其赋值而不会报错,像这样

var undefined='I am undefined';

很容易想到,如果没有undefined形参,这样会污染jQuery内部的undefined。一个未定义的变量值为undefined,若在window域下不小心定义了undefined的值,那就彻底悲催了。而当传入undefined形参,又不传值给它,这样函数内部undefined的值就还是undefined,不受外部影响了。

参考:

讨论闭包传入参数:window & undefined

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>