在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(){}
答案 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。它会清除您的所有疑问。