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

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

  • 相关阅读:
    BZOJ 2142: 礼物 [Lucas定理]
    HDU 4349 Xiao Ming's Hope [Lucas定理 二进制]
    HDU 3944 DP? [Lucas定理 诡异的预处理]
    HDU 3037 Saving Beans [Lucas定理]
    HDU 4372 Count the Buildings [第一类斯特林数]
    整理一点与排列组合有关的问题[组合数 Stirling数 Catalan数]
    ZOJ 3557 & BZOJ 2982 combination[Lucas定理]
    BZOJ 3790: 神奇项链 [Manacher 贪心]
    CF 2015 ICL, Finals, Div. 1 J. Ceizenpok’s formula [Lucas定理]
    HDU 1573 X问题 [中国剩余定理]
  • 原文地址:https://www.cnblogs.com/sccd/p/5478994.html
Copyright © 2011-2022 走看看