JavaScript如何分配函数的“名称"属性? [英] How JavaScript assigns `name` attribute of function?
问题描述
在JavaScript中,当我定义这样的函数时
In JavaScript, when I define function like this
function aaa(){}
稍后我可以通过 name
属性访问名称:
I can later access the name by name
attribute:
aaa.name
这将返回
"aaa"
但是,当我通过 var
定义函数时,从技术上讲,它应该是没有 name
属性的匿名函数:
However, when I define function via var
, it technically should be anonymous function without name
attribute:
var aaa = function(){}
但是相反,它假定 aaa
是函数名,并将其分配给 name
属性:
But instead it assumes that aaa
is function name and assigns it to name
attribute:
aaa.name
也将返回
"aaa"
JavaScript如何确定名称
应该是什么,尤其是考虑到分配可能使用更复杂的场景这一事实:
How JavaScript decides what should be the name
, especially considering the fact that assignments could use more complicated scenarios:
var aaa = bbb = function(){}
或者 var aaa = arr [0] = function(){}
?
推荐答案
类似以下内容:
推断的函数名称
变量和方法可以从中推断出匿名函数的名称其句法位置(ECMAScript 2015中的新功能).
Variables and methods can infer the name of an anonymous function from its syntactic position (new in ECMAScript 2015).
var f = function() {};
var object = {
someMethod: function() {}
};
console.log(f.name); // "f"
console.log(object.someMethod.name); // "someMethod"
阅读整个博客.它将清除所有查询.
Read the entire blog. It will clear all your queries.
这篇关于JavaScript如何分配函数的“名称"属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!