为什么输出结果是10 1

<!DOCTYPE html>

<html>


<head>

    <meta charset="UTF-8">

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

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

</head>


<body>

    <script>

        var length = 10;


        function fn() {

            console.log(this.length);

            // console.log(this);//window

        }

        var obj = {

            length: 5,

            method: function(fn) {

                fn(); //10

                arguments[0]();//1

            }

        }

        obj.method(fn);

    </script>

</body>


</html>


叮当猫咪
浏览 403回答 1
1回答

慕无忌1623718

fn的所在上下文是window,所以直接调用fn输出的是最开始定义的length为10。通过arguments[0]()调用的上下文其实是arguments,也就是传入method的参数类数组对象,其长度只有1。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript