JavaScript:所有函数都是闭包吗?

JavaScript:所有函数都是闭包吗?,javascript,function,closures,Javascript,Function,Closures,我知道闭包是什么,它们是可以访问词法作用域的函数,是无法访问的变量 例: const curryMultiply=x=>y=>x*y; 现在,当调用两次curryMultiply时,我们可以访问原始参数,这对一般的JS开发人员来说并不是什么新鲜事 但是,以这个例子为例: const f=key=>{ 返回窗口[键]; }; 现在,它根本不创建函数,但它可以访问全局对象,因此在该示例中,函数f是否可以通过闭包访问window 这个怎么样: const TAU=Math.PI*2; 导出常量mu

我知道闭包是什么,它们是可以访问词法作用域的函数,是无法访问的变量

例:

const curryMultiply=x=>y=>x*y;
现在,当调用两次curryMultiply时,我们可以访问原始参数,这对一般的JS开发人员来说并不是什么新鲜事

但是,以这个例子为例:

const f=key=>{
返回窗口[键];
};
现在,它根本不创建函数,但它可以访问全局对象,因此在该示例中,函数
f
是否可以通过闭包访问
window

这个怎么样:

const TAU=Math.PI*2;
导出常量mul_,按_tau=x=>x*tau;
我知道,在某些语言中,比如C++,这些函数只是函数,没有额外的思想。
以前,我认为全局函数不会创建闭包,是吗?

在Javascript中,每个函数都是闭包

javascript中的每个函数都可以访问词法范围(创建它的范围)

箭头函数,没有特定的功能范围。但是,它们仍然可以访问父范围

每个函数对父作用域的访问都是通过闭包实现的。如果一个函数没有父函数,由于闭包,它将有权访问全局范围


你应该考虑添加/确认你的报价来源。