Javascript 题目集-题壹

第一题:

var length=10;
function fn(){
    alert(this.length);
}
var obj={
    length:3,
    method:function(fn){
           fn();
           arguments[0]();
    }

}
obj.method(fn);
//输出结果

输出结果:10 1

考察知识点两点,第一有关函数作用域中this的指向问题,第二考察arguments问题。

通常我们判断函数中this,往往看调用该函数的对象,而非函数在哪里执行。
此处fn在obj.method中执行,fn此处并非归属于obj,属于外来传进的参数。
而在函数外声明的变量有个大的归属–window
所以 第一个fn执行的时候 this指向的是window。
arguments标准来说是类数组,在method函数里,arguments[0]即是fn(为什么是fn,自行搜索arguments的介绍),但此时执行arguments0,调用的对象指向的是arguments,arguments类数组的特性,使其length就等同于该函数参数的个数。
因此

var obj={
    length:3,
    method:function(fn){
            window.fn();//window.length 10
            arguments.fn();//arguments.length 1
    }
}

所以输出就是10 和1

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值