JavaScript如何分配函数的`name`属性?
在JavaScript中,当我定义这样的函数时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
函数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"