Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 理解涉及“论点”的“这种”行为_Javascript_Arguments_This - Fatal编程技术网

Javascript 理解涉及“论点”的“这种”行为

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(

因此,我有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(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。我花了一段时间才意识到这一点