您的位置:首页 > Web前端 > JavaScript

Javascript 题目集-题壹

2015-12-18 21:09 621 查看
第一题:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: