JavaScript如何分配函数的`name`属性?

JavaScript如何分配函数的`name`属性?,javascript,Javascript,在JavaScript中,当我定义这样的函数时 函数aaa(){} 我以后可以通过name属性访问名称: aaa.name 哪个会回来 “aaa” 但是,当我通过var定义函数时,从技术上讲,它应该是匿名函数,没有name属性: var aaa=function(){} 但它假定aaa是函数名,并将其分配给name属性: aaa.name 也会回来 “aaa” JavaScript如何决定名称,特别是考虑到分配可能会使用更复杂的场景: var aaa=bbb=function(){} 或 var

在JavaScript中,当我定义这样的函数时

函数aaa(){}

我以后可以通过
name
属性访问名称:

aaa.name

哪个会回来

“aaa”

但是,当我通过
var
定义函数时,从技术上讲,它应该是匿名函数,没有
name
属性:

var aaa=function(){}

但它假定
aaa
是函数名,并将其分配给
name
属性:

aaa.name

也会回来

“aaa”

JavaScript如何决定
名称
,特别是考虑到分配可能会使用更复杂的场景:

var aaa=bbb=function(){}
var aaa=arr[0]=function(){}


Javascript通过使用与函数相等的左侧参数来声明函数的
名称
变量,在所有基本情况下都是
'aaa'
。在第一个复杂定义中,您在上面声明的状态Javascript将获取变量
ab
,并将其分配给一个名为
'ab'
的函数。在最后一个示例中,您提供了将函数设置为内存中的指针(该指针不是已定义的变量),这将
name
属性设置为空字符串,因为
arr[0]
不是变量名,而是指向内存的指针。 下面是一个显示此信息的示例。

类似于以下内容:

推断函数名

变量和方法可以从中推断匿名函数的名称 其语法位置(ECMAScript 2015中新增)

通读全文。它将清除您的所有查询。

这是一个名为ES6的功能。
var f = function() {}; 
var object = {   
    someMethod: function() {} 
};
console.log(f.name); // "f" 
console.log(object.someMethod.name); // "someMethod"