JavaScript中函数的name属性
JavaScript中函数的name属性 js定义函数时,函数名是可选的,如果一个函数不需要用名称进行引用,则不需要对它进行命名。 命名一个函数时,该名称在整个函数声明范围内是有效的。如果一个命名函数声明在顶层,则 window 对象上的同名属性会引用到该函数。 所有的函数都有一个 name 属性,该属性保存的是该函数名称的字符串。 function foo () { } foo.name // "foo" 这个属性早就被浏览器广泛支持,但是直到 ES6,才将其写入了标准。但是ES6 对这个属性的一些行为做出了一些修改。分以下四种情况: 函数被声明为一个命名函数 这种情况ES5和ES6语法一致, name 属性返回该函数的函数名。 function foo () { } typeof foo // "function" foo.name // "foo" 创建一个匿名函数,并赋值给一个变量 在ES5中,该函数的 name 属性为“”,而 ES6 的 name 属性会返回实际的函数名 var f = function () { }; // ES5 f.name // "" // ES6 f.name // "f" 创建一个匿名函数,将其赋值给一个 window 的属性 在ES5中,该函数的 name 属性返回函数名(window下的赋值属性名),而 ES6 的 name 属性会返回“