关于js回调函数和作用域的小练习

初学js 个人觉得js的语法真的很混乱🤪,今天做了一个关于回调函数和作用域的小练习,但不知为何出错,目标输出应该是4、12

img

img

第一个问题,如果你的 f 的参数,想最为一个方法使用,你必须在2的位置返回一个方法

第二个问题,你的 f2 里,b 已经作为参数了,尽量不要将这个参数洗掉,从新使用其他变量名

下边是个正确的结果


  <script>
  function a(){
      var a = 1;
      function f(input){
          var c = 3;
          var b = input();
          console.log(a + c)
          console.log(a + b)
      }
      function k(){
          return 5;
      }
      function v(){
          return 6;
      }
      function f2(a,b){
          var c = function(){return a() + b()
          }
          return c
      }
      f(f2(k,v))
  }
  a()
  </script>

img

var b=input();
改为
var b=input;

为你修改的代码如下
1.删除了input()后的括号;(因f2方法 return b;b并不是一个funcion,故input也不是function);
2.f2方法中 var b = a() + b();加上了括号;(因想要得到k、v方法的返回值需要调用方法,所以需要加上括号);

            var b = 2;

            function a() {
                var a = 1;

                function f(input) {
                    var c = 3
                    var b = input;
                    console.log(a + c);
                    console.log(a + b);
                }

                function k() {
                    return 5;
                }

                function v() {
                    return 6;
                }

                function f2(a, b) {
                    a();
                    b();
                    var b = a() + b();
                    return b;
                }
                f(f2(k, v));
            }
            a();

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632