Web前端面试真题(算法篇):001篇

91 篇文章 0 订阅
84 篇文章 4 订阅
1.   var length = 10;
2.   function fn() {
3.       console.log(this.length);
4.   }
5.   var obj = {
6.       length:5,
7.       method: function(fn){
8.           fn();
9.           arguments[0]();
10.      }
11.  }
12.  obj.method(fn,3)

解释:
先说运行结果 : 10 , 2
解析:
两次打印的结果, 其实fn这个函数
关键点, 就在于, 我们要搞清楚, 每次执行时的this到底是谁?

第一次的结果比较好辨认, fn函数尽管经过了传递,
但是在第 8 行代码当中, 函数是直接调用, this显然指向window对象
那么打印出来的window.length, 肯定就是10了

第二次的结果, 执行函数时, 写法有所不同
arguments首先是个对象
第9行, arguments[0], 其实等价于 arguments.0
在这里你把0看做一个属性名称
就像平时访问对象属性那样obj[“age”]
因此就不难理解 arguments.0();
那么this当然就会指向arguments
所以就打印了arguments.length , 结果为2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值