(一)每日一题
(二)复习知识点
this指针
1、在函数预编译过程中,this指向window
2、全局作用域中,this指向window
3、obj.func(); 对象里面的方法,this指向对象
4、call/apply可以改变this的指向
该题fn()函数内部有this指针,谁调用这个函数,this就指向谁,无人调用这个函数就指向window。
arguments类数组
arguments是函数里面隐式的一个实参数组,不定参。arguments[i]与实参之间存在映射关系,两者之间你变我就变。
(三)解题思路
题目一开始声明了一个全局变量length,并赋值为10,接着定义了一个fn函数,用来在控制台输出长度。还声明了一个obj对象,obj对象有length属性(属性值为5)和method方法。
以上部分都是定义的内容,在控制台中不会输出,关键是在最后一行代码。
最后一行代码obj调用他的method方法并传入2个实参,执行过程是method方法先执行fn()函数,因为没有谁去调用fn()函数,所以函数内部的this指向的是window,因此控制台先输出10。紧接着执行arguments[0](); 代码意思可以理解为arguments的第0位fn()执行,arguments[0]()也可以看成是arguments.fn(); 此处是arguments去调用了fn,fn里面的this应该指向arguments,他的长度很明显是2(有两个参数)。因此最后返回的是10和2
声明:该文章纯属学习记录,题目来源于网络非原创,笔记和解题思路纯属个人理解,如有错误谅解斧正。