信息发布→ 登录 注册 退出

如何创建函数_javascript中有哪些方式?

发布时间:2025-12-16

点击量:
JavaScript创建函数有四种方式:函数声明(具名、可提升)、函数表达式(匿名或具名、不可提升)、箭头函数(无this/arguments、不可构造)、Function构造函数(动态生成、性能差)。

在 JavaScript 中创建函数主要有四种常用方式,每种适用场景不同,理解区别能帮你写出更清晰、更可靠的代码。

函数声明(Function Declaration)

最基础的方式,用 function 关键字加函数名定义,会被“提升”(hoisted),即可以在定义前调用。

语法示例:

function sayHello(name) {
  return `Hello, ${name}`;
}

注意:函数声明必须有名字,且不能出现在 if、for 等块级作用域内(ES2015+ 在严格模式下会报错)。

函数表达式(Function Expression)

把函数赋值给变量,可以是具名或匿名。不会被提升,必须先定义再调用。

常见写法:

  • 匿名函数表达式:const add = function(a, b) { return a + b; };
  • 具名函数表达式:const calc = function sum(a, b) { return a + b; };(内部可用 sum 递归调用)

箭头函数(Arrow Function)

ES6 引入的简洁写法,没有自己的 thisargumentssupernew.target,适合写简短逻辑或回调。

写法灵活:

  • 单参数可省括号:x => x * 2
  • 多参数需括号:(a, b) => a + b
  • 函数体多行需花括号和 return:() => { console.log('hi'); return true; }

⚠️ 不能用作构造函数(不能 new),也没有原型属性。

Function 构造函数

动态创建函数,传入参数名和函数体字符串,类似 eval,性能差且不推荐常规使用,仅在极少数需要运行时生成逻辑的场景下考虑。

示例:

const multiply = new Function('a', 'b', 'return a * b');

缺点:无法访问外层作用域(闭包),调试困难,存在安全风险(避免拼接用户输入)。

基本上就这些。日常开发中,优先用函数声明或箭头函数;需要绑定固定 this 时选箭头函数;要动态生成或兼容老环境时再考虑其他方式。

标签:# javascript  # es6  # java  # 区别  # 作用域  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!