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

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

  • 相关阅读:
    换装WIN10(windows)那点儿事,换装操作系统一文通,玩转安装操作系统
    Win10永久版低价购买及激活工具使用说明
    Win10系统自带软件删除和恢复工具
    微软免费AI作文打分软件升级:雅思考研四六级都能用,还能查单词给替换
    扫描全能王 v5.13.0.20190916 去水印和广告版
    Vue组件
    vue自定义过滤器的创建和使用
    vue自定义指令的创建和使用
    vue的基础使用
    vue的概述
  • 原文地址:https://www.cnblogs.com/sccd/p/5478994.html
Copyright © 2011-2022 走看看