首页 > 代码库 > jQuery源码解读一
jQuery源码解读一
(function(window,undefined){...})(window);
这是一个典型的自执行的匿名函数。
为什么会有一个名为undefined的形参呢?
undefined不是常量,可以把它设置为其他值。
undefined表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。
JavaScript中,undefined并不是作为JavaScript的保留关键字,我们可以执行var undefined = ‘123‘对undefined赋值。
所以如果先执行var undefined = ‘123‘;再去执行(function(window){...//code goes there})(window),会造成中间代码被污染。
但是jQuery的(function(window,undefined){...})(window)用法,很好的避免了这个问题。
执行匿名函数的时候,只传递一个参数window,而不传递undefined,那么函数体重的undefined局部变量的值,刚好就是undefined,处理方式甚是巧妙。
不过,我发现目前以下的四种方式返回结果都是undefined,是不是说明现在的JavaScript也已经很好的避免了undefined污染的问题呢?
<script type="text/javascript"> (function (window, undefined) { alert(undefined); })(window); </script> <script type="text/javascript"> var undefined = ‘myValue‘; (function (window) { alert(undefined); })(window); </script> <script type="text/javascript"> var undefined = ‘myValue‘; (function (window, undefined) { alert(undefined); })(window); </script> <script type="text/javascript"> var undefined = ‘myValue‘; window.undefined = ‘myValue_2‘; (function (window) { alert(undefined); })(window); </script> <script type="text/javascript"> var undefined = ‘myValue‘; window.undefined = ‘myValue_2‘; (function (window, undefined) { alert(undefined); })(window); </script>
jQuery源码解读一
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。