考察 this 和 arguments
var length = 1;
function fn() {
console.log(this.length);
}
let obj = {
length: 100,
action(callback) {
// 输出1
callback(); // 1
// 输出2
arguments[0](); // 5
// 输出3
var foo = arguments[0];
foo(); // 1
// 输出4
this.foo1 = arguments[0];
this.foo1(); // 100
},
};
arr = [1, 2, 3, 4];
obj.action(fn, ...arr);
引题
[function fn () {
console.log(this.length)
},1,2,3,4][0](); // 5
// 函数的载体是数组,所有this指向当前数组
题目分析:
this的指向:谁调用指向谁。
arguments:是一个对应于传递给函数的参数的类数组对象(函数实际传递的参数,类数组)
var:定义全局变量,存在有变量提升
- 输出1:window调用——>this.length === window.length
- 输出2:数组调用——>this.length===arr.length
- 输出3:window调用——>this.length === window.length
- 输出4:对象调用——>this.length===obj.length