JavaScript创建函数有四种方式:函数声明(具名、可提升)、函数表达式(匿名或具名、不可提升)、箭头函数(无this/arguments、不可构造)、Function构造函数(动态生成、性能差)。
在 JavaScript 中创建函数主要有四种常用方式,每种适用场景不同,理解区别能帮你写出更清晰、更可靠的代码。
最基础的方式,用 function 关键字加函数名定义,会被“提升”(hoisted),即可以在定义前调用。
语法示例:
function sayHello(name) {
lo, ${name}`;注意:函数声明必须有名字,且不能出现在 if、for 等块级作用域内(ES2015+ 在严格模式下会报错)。
把函数赋值给变量,可以是具名或匿名。不会被提升,必须先定义再调用。
常见写法:
ES6 引入的简洁写法,没有自己的 this、arguments、super 或 new.target,适合写简短逻辑或回调。
写法灵活:
⚠️ 不能用作构造函数(不能 new),也没有原型属性。
动态创建函数,传入参数名和函数体字符串,类似 eval,性能差且不推荐常规使用,仅在极少数需要运行时生成逻辑的场景下考虑。
示例:
const multiply = new Function('a', 'b', 'return a * b');缺点:无法访问外层作用域(闭包),调试困难,存在安全风险(避免拼接用户输入)。
基本上就这些。日常开发中,优先用函数声明或箭头函数;需要绑定固定 this 时选箭头函数;要动态生成或兼容老环境时再考虑其他方式。