Javascript 理解涉及“论点”的“这种”行为
因此,我有3个函数,如下所示:Javascript 理解涉及“论点”的“这种”行为,javascript,arguments,this,Javascript,Arguments,This,因此,我有3个函数,如下所示: function a() { arguments[0](); } function b(fn) { fn(); } function c() { console.log(this); } 现在,考虑输出: a(c) // Arguments b(c) // Window a(() => {console.log(this}) // Window b(() => {console.log(this)}) // Window 为什么a(
function a() {
arguments[0]();
}
function b(fn) {
fn();
}
function c() {
console.log(this);
}
现在,考虑输出:
a(c) // Arguments
b(c) // Window
a(() => {console.log(this}) // Window
b(() => {console.log(this)}) // Window
为什么
a(c)
在所有其他情况下都是窗口(考虑到非严格)时输出参数?在JavaScript中,此
通常指调用函数的对象(除非它是箭头函数)。例如,如果我们做这样的事情:
var obj={fun:function(){console.log(this);}
var obj1={fun:obj.fun,otherProperty:123}
obj.fun();//相当于obj[“乐趣”]()
obj1.fun();//相当于obj1[“fun”]()
这里唯一看似奇怪的例子是第一个。使用foo.bar()
,foo
将是这样。这相当于foo[“bar”]()
,因此,它也相当于参数[0]()
是一个方法调用。谢谢@Bergi。我花了一段时间才意识到这一点