Javascript 匿名函数赋值变量是否在本地可用?

Javascript 匿名函数赋值变量是否在本地可用?,javascript,Javascript,我一直认为匿名函数没有名称,但分配时并非如此: constfoo=()=>{}; console.log(foo.name);//预期为“”,但得到“foo”似乎它确实不是局部变量: var-fact=n=>n>0?n*事实(n-1):1; var foo=事实; 事实=x=>x; 控制台日志(foo(5)) 我很想知道函数变量名是否在匿名函数中是局部的 不,这只是命名函数表达式的情况(甚至在那里) 我们需要沿着范围链往上走。显然,这不是一个主要的性能问题 这根本不是性能上的差异。作用域链是

我一直认为匿名函数没有
名称
,但分配时并非如此:

constfoo=()=>{};

console.log(foo.name);//预期为“”,但得到“foo”
似乎它确实不是局部变量:

var-fact=n=>n>0?n*事实(n-1):1;
var foo=事实;
事实=x=>x;
控制台日志(foo(5))
我很想知道函数变量名是否在匿名函数中是局部的

不,这只是命名函数表达式的情况(甚至在那里)

我们需要沿着范围链往上走。显然,这不是一个主要的性能问题

这根本不是性能上的差异。作用域链是静态的,对于变量在哪个作用域中的性能来说并不重要

我一直认为匿名函数没有名字,但分配时不是这样


是的,直接分配给变量的匿名函数表达式将获得其
.name
属性集。但是,这与它们的作用域无关。

匿名函数本身仍然没有名称。您正在检查包含匿名函数的变量的名称。如果要查看堆栈跟踪,仍然几乎不可能识别函数。我很确定变量的名称不能通过编程方式访问。它必须是匿名函数的名称。这是一个。@axlj否,它实际上是该函数的名称。尝试这样做:
constfoo=()=>{};常数bar=foo;console.log(bar.name)@Xufox我也这么认为。我只是想知道,
fact
是否也是匿名函数中的局部变量。