为了账号安全,请及时绑定邮箱和手机立即绑定

为什么输出结果是10 1

为什么输出结果是10 1

叮当猫咪 2019-02-08 19:31:35
<!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>
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

fn的所在上下文是window,所以直接调用fn输出的是最开始定义的length为10。
通过arguments[0]()调用的上下文其实是arguments,也就是传入method的参数类数组对象,其长度只有1。

查看完整回答
反对 回复 2019-02-16
  • 1 回答
  • 0 关注
  • 402 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信