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

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

  • 相关阅读:
    剑指offer——二叉树的深度
    剑指offer——约瑟夫环
    剑指offer——矩阵中的路径
    剑指offer——机器人的运动范围
    Java一些知识
    剑指offer——判断链表中是否有环
    无序数组array, 找到数组中两个数的最大差值
    剑指offer——二叉搜索树的第k个节点
    记录结果再利用的"动态规划"之背包问题
    倍增算法
  • 原文地址:https://www.cnblogs.com/sccd/p/5478994.html
Copyright © 2011-2022 走看看