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

时间:2017-06-18 03:32:10

标签: javascript

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

function aaa(){}

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

aaa.name

将返回

"aaa"

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

var aaa=function(){}

但相反,它假设aaa是函数名称并将其分配给name属性:

aaa.name

也将返回

"aaa"

JavaScript如何决定name应该是什么,特别是考虑到分配可以使用更复杂的场景这一事实:

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

2 个答案:

答案 0 :(得分:1)

Javascript通过使用等于函数的左侧参数声明函数的name变量,在所有基本情况下都是'aaa'。在第一个复杂定义中,您在Javascript上面声明了状态将采用变量ab并将其分配给名为'ab'的函数。在最后一个例子中,你提供它设置的函数等于内存中的指针,它不是一个已定义的变量,这会将name属性设置为空字符串,因为arr[0]不是变量名但是指向内存的指针。 这是显示此内容的JSFiddle

答案 1 :(得分:0)

这样的事情:

  

推断的函数名称

     

变量和方法可以从中推断出匿名函数的名称   它的句法位置(ECMAScript 2015中的新内容)。

var f = function() {}; 
var object = {   
    someMethod: function() {} 
};
console.log(f.name); // "f" 
console.log(object.someMethod.name); // "someMethod"

阅读整个blog。它会清除您的所有疑问。