zoukankan      html  css  js  c++  java
  • JavaScript 同名方法的处理

    在JS中,如果存在同名同参的方法,它会先调用哪一个?先看两个例子:

    例1:

    <html>
    <head>
        <title></title>
        <script type="text/javascript">
            function btnTest() {
                $f1();
                $f2();
            }
    
            function A() {
                alert(1);
            }
            var $f1 = A;
        </script>
        <script type="text/javascript">
            function A() {
                alert(2);
            }
            var $f2 = A;
        </script>
    </head>
    
    <body>
        <form>
            <div>
                <input type="button" name="Testing" onclick="btnTest();" value="TEST" />
            </div>
        </form>
    </body>
    </html>
    View Code

    结果会弹出:1    2 

    例2:

    <html>
    <head>
        <title></title>
        <script type="text/javascript">
            function btnTest() {
                $f1();
                $f2();
            }
    
            function A() {
                alert(1);
            }
            var $f1 = A;
        
            function A() {
                alert(2);
            }
            var $f2 = A;
        </script>
    </head>
    
    <body>
        <form>
            <div>
                <input type="button" name="Testing" onclick="btnTest();" value="TEST" />
            </div>
        </form>
    </body>
    </html>
    View Code

    结果会弹出:2    2 

    这和当前的代码段有很大关系,如果在两个同名同参的JS方法同一个代码段内部,则最后加载的方法会将前一个覆盖掉,反之,如果能在当前代码段找到对应的方法,就立即调用。

    在JS中,如果存在同名不同参的方法,它会先调用哪一个?再看两个例子:

    例1:

    <html>
    <head>
        <title></title>
        <script type="text/javascript">
            function btnTest() {
                var val = document.getElementById("txtVal").value;
                if (val > 10) {
                    A();
                }
                else {
                    A(val);
                }
            }
    
            function A() {
                alert(1);
            }
    
            function A(val) {
                alert(2);
                alert(val);
            }
            
        </script>
    </head>
    
    <body>
        <form>
            <div>
                Input Value(INT):<input type="text" id="txtVal"/><br>
                <input type="button" name="Testing" onclick="btnTest();" value="TEST" />
            </div>
        </form>
    </body>
    </html>
    View Code

    例2:

    <html>
    <head>
        <title></title>
        <script type="text/javascript">
            function btnTest() {
                var val = document.getElementById("txtVal").value;
                if (val > 10) {
                    A();
                }
                else {
                    A(val);
                }
            }
    
            function A() {
                alert(1);
            }
        </script>
        <script type="text/javascript">
            function A(val) {
                alert(2);
                alert(val);
            }
        </script>
    </head>
    
    <body>
        <form>
            <div>
                Input Value(INT):<input type="text" id="txtVal"/><br>
                <input type="button" name="Testing" onclick="btnTest();" value="TEST" />
            </div>
        </form>
    </body>
    </html>
    View Code

    测试结果:同名不同参的方法会用最后加载的方法会将前一个覆盖掉!

  • 相关阅读:
    ipython notebook
    使用gevent多线程下载豆瓣音乐 李少宏 博客园
    牛人
    Lucene中对document(记录)的CURD操作~为分布式全文检索设计
    DDD领域驱动设计(Domain Driven Design)(转)
    LINQtoSQL那点事~线程共享的DbContext与私有的DbContext
    LINQtoSQL那点事~LINQtoSQL中的数据缓存与应对
    分布式中的DTO(转)
    php处理checkbox
    filter_var()函数解释
  • 原文地址:https://www.cnblogs.com/sccd/p/5478994.html
Copyright © 2011-2022 走看看