js call的一个问题,很简单的代码,输出结果如何解释?

foo2()采用了箭头函数。
按照对call的理解,foo.call({id:23})应该输出23,而不是0。所以,谁能解释一下吗?
代码如下:

<script type="text/javascript">

    function foo() {

        setTimeout(function (){

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

        }, 100);

    }

    

    function foo2() {

        setTimeout(() => {

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

        }, 100);

    }

    

    var id = 0;

    foo.call({id:23});

    foo2.call({id: 2});

</script>

执行结果:
0
2


慕桂英546537
浏览 443回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript