第一题
var length = 10;
function fn(){
console.log(this.length);
}
var obj = {
length:5,
method:function(){
fn(); //这里为啥返回10???,帮忙解释下这里谢谢
arguments[0]() // 这里我知道为什么返回2
}
}
obj.method(fn,1)
第二题
var length = 10;
function fn(){
console.log(this.length);
}
var obj = {
length:5,
method:function(){
console.log(this.length); //这里明明表示函数的作用域是obj啊,为啥下面的就变了
fn(); // 还是不知道这里为啥是10
}
}
obj.method(fn,1)
这个问题是作用域 具体可以看看这篇文章
吐槽一下: 其实你不知道为什么 返回2
简单来说 函数执行的时候 是看他自己的作用域,而不是把函数中的代码copy出来 到调用的位置执行.
但是 argument比较特殊,他会改变this的指向(具体自行百度一下).