JavaScript函数的name属性可获取函数名,ES6标准特性:命名函数返回定义名,匿名函数和箭头函数返回空字符串,类及方法同理;该属性只读,bind后加"bound "前缀,Function构造器创建的为"anonymous"。

JavaScript 中可以通过函数的 name 属性直接获取函数的名称,这是 ES6 引入的标准特性,适用于大多数常见函数类型。
普通函数和命名函数表达式
对于声明的函数或带名字的函数表达式,name 属性会准确返回其定义时的名字:
function sayHello() {}
console.log(sayHello.name); // "sayHello"
const greet = function hello() {};
console.log(greet.name); // "hello"(取函数表达式中的名字,不是变量名)
匿名函数表达式和箭头函数
匿名函数表达式和箭头函数没有显式名称,name 会返回空字符串或推断名:
- 纯匿名函数表达式:
name是空字符串"" - 赋值给变量的匿名函数:引擎可能推断出变量名(非标准行为,Chrome/Firefox 支持,但不可依赖)
- 箭头函数:
name总是空字符串"",即使写成const fn = () => {}
类和类方法
类本身和类中定义的方法也具有 name 属性:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
class Person {}
console.log(Person.name); // "Person"
class Animal {
constructor() {}
run() {}
}
console.log(Animal.prototype.run.name); // "run"
console.log(Animal.name); // "Animal"
注意边界情况
name 属性是只读的,无法修改;它不反映运行时绑定的变量名,也不适用于被压缩/混淆后的代码:
- 使用
bind()创建的函数,name以"bound "开头,后跟原函数名(如"bound sayHello") - 用
Function构造器创建的函数,name是"anonymous" - 在严格模式或某些打包工具(如 Webpack/Terser)下,原始名称可能被移除或替换
不复杂但容易忽略。

















