zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    服务器端事件发送SSE
    Mybatis generator代码生成
    如何靠谱地查到Tomcat的版本
    java自动生成代码
    Java读取excel(兼容03和07格式)
    常见的NoSQL数据库
    任务五 通用类问题相关度计算实现
    任务四 娱乐相关节目和娱乐人物关系代码整理
    任务三 非人物分析判断
    任务二 人物类与娱乐类关联优化分析
  • 原文地址:https://www.cnblogs.com/zouyanzhi/p/6593592.html
Copyright © 2011-2022 走看看