如果把箭头函数都改成普通函数,前三次调用的时候,因为传入的参数的回合,得到的都是return函数,所以传入的参数都没有用是吗

如果把箭头函数都改成普通函数,前三次调用的时候,因为传入的参数的回合,得到的都是return函数,所以传入的参数都没有用是吗

<!DOCTYPE html>

<html lang="en">


<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>


<body>

    <script>

        function foo() {

            return function () {

                return function () {

                    return function () {

                        console.log('id', this.id);

                    }

                }

            }

        }

        var f = foo.call({ id: 1 });

        var t1 = f.call({ id: 2 })()();

        var t2 = f().call({ id: 3 })();

        var t3 = f()().call({ id: 4 });

    </script>

</body>


</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕慕子 2022-07-04 16:24:12

同学你好,改成普通函数后,传入的参数只针对当前函数,并不会影响到其他函数。详情可以参考下图标注理解:

https://img1.sycdn.imooc.com//climg/62c2a379093e013d13920486.jpg

祝学习愉快~

  • 普通函数的this指向了调用它的对象,为什么第一第二个的this指向了window对象?

    2023-02-07 19:47:24
  • 同学你好,普通函数的this确实指向调用它的对象,不太理解同学说的第一个和第二个具体指的是什么?可以再仔细看下老师上次解答时给出的截图标注,其中的2、3条针对的是var t1 =.... 和var t2 = .... 这两句代码的详细执行过程,因为最终都相当于调用最里面返回的函数(也就是截图中标注的函数③),在全局中调用的该函数,所以函数③里面的this指向window。

    如果还有疑问,可以图文结合,再详细描述下,便于帮助同学准确高效的解答问题。

    祝学习愉快~

    2023-02-08 09:48:16
  • 为什么调用最里面返回的函数是在全局中调用的?怎么判断是否是全局调用的函数?

    2023-02-08 10:01:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师