m0_46602893 2021-04-06 18:47 采纳率: 91.5%
浏览 16
已采纳

关于函数作用域的问题?

<!-- <!DOCTYPE html> -->
<html lang="en">
      <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Document</title>
            <script>
                  var a = 10, b = 20;

                  function show(){
                        var b =100;
                        a += 5;
                        alert(a + ","+ b);
                  }
                  show();
                  alert(a + ","+ b);
                 
            </script>
      </head>
      <body>
      </body>
</html>
<!-- <!DOCTYPE html> -->
<html lang="en">
      <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <title>Document</title>
            <script>
                  var a = 10, b = 20;

                  function show(a){
                        var b =100;
                        a += 5;
                        alert(a + ","+ b);
                  }
                  show(a);
                  alert(a + ","+ b);
                 
            </script>
      </head>
      <body>
      </body>
</html>

上面两段代码为什么第一段代码show是(15,100);alert(15,20)

第二段代码show是(15,100);alert(10,20)?

谁能详细解释一下,完全懵逼

  • 写回答

1条回答 默认 最新

  • soar3033 2021-04-06 21:54
    关注
    var a = 10, b = 20;     //“全局”变量a 值是10,“全局”变量b 值是20
     
                    function show(){
                            var b =100;    //“局部”变量b 值是100
                            a += 5;        //“全局”变量a 值改为15
                            alert(a + ","+ b);    //输出 ,a是15,b是100   (a全局,b局部)
                      }
                      show();
                      alert(a + ","+ b);    //输出   a是15,b是20(a全局,b全局)

    上面是第一段

     

    下面是第二段

                      var a = 10, b = 20;   //全局变量a 值10 ,全局变量b 值20
     
                      function show(a){        //这里引入了形参a,也就是说在show()内,a是个局部变量
                            var b =100;        //局部变量b 值100(不影响外面的全局变量b)
                            a += 5;            //局部变量a自加5,变成15,不影响外面的全局变量a
                            alert(a + ","+ b); //输出局部变量a=15,b=100
                      }
                      show(a);
                      alert(a + ","+ b);    //输出全局变量a=10,b=20
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 软件定义网络mininet和onos控制器问题
  • ¥15 微信小程序 用oss下载 aliyun-oss-sdk-6.18.0.min client报错
  • ¥15 ArcGIS批量裁剪
  • ¥15 labview程序设计
  • ¥15 为什么在配置Linux系统的时候执行脚本总是出现E: Failed to fetch http:L/cn.archive.ubuntu.com
  • ¥15 Cloudreve保存用户组存储空间大小时报错
  • ¥15 伪标签为什么不能作为弱监督语义分割的结果?
  • ¥15 编一个判断一个区间范围内的数字的个位数的立方和是否等于其本身的程序在输入第1组数据后卡住了(语言-c语言)
  • ¥15 Mac版Fiddler Everywhere4.0.1提示强制更新
  • ¥15 android 集成sentry上报时报错。