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
是否也是匿名函数中的局部变量。