javaScript函数定义分声明、表达式和箭头函数:声明会被提升且必须具名;表达式不提升,可匿名或具名;箭头函数无this绑定;调用均为fn(…)形式,IIFE需括号包裹后立即执行。

javascript 中的函数可以通过多种方式定义,调用方式也因定义形式略有不同,核心在于理解“声明”和“表达式”的区别,以及函数是否具名。
函数声明(function Declaration)
使用 function 关键字 + 函数名 + 参数列表 + 函数体来定义,会被提升(hoisted),可在定义前调用:
- 语法:
function sayHello(name) { return 'Hello, ' + name; } - 调用直接写函数名加括号:
sayHello('Alice'); - 注意:函数名是必需的,不能省略
函数表达式(Function Expression)
把函数赋值给一个变量,常见于 const/let/var 声明中,不会被提升,必须先定义再调用:
- 语法:
const add = function(a, b) { return a + b; }; - 调用:
add(2, 3); // 5 - 可选具名(用于调试或递归):
const factorial = function fact(n) { return n
箭头函数(Arrow Function)
ES6 引入的简洁写法,没有自己的 this、arguments,也不能作为构造函数:
盛世企业网站管理系统1.1.2
0
免费 盛世企业网站管理系统(SnSee)系统完全免费使用,无任何功能模块使用限制,在使用过程中如遇到相关问题可以去官方论坛参与讨论。开源 系统Web代码完全开源,在您使用过程中可以根据自已实际情况加以调整或修改,完全可以满足您的需求。强大且灵活 独创的多语言功能,可以直接在后台自由设定语言版本,其语言版本不限数量,可根据自已需要进行任意设置;系统各模块可在后台自由设置及开启;强大且适用的后台管理支
0 立即学习“Java免费学习笔记(深入)”;
- 单参数可省括号,单表达式可省大括号和 return:
const square = x => x * x; - 多参数或复杂逻辑需括号和花括号:
const greet = (name, time) => { return `good ${time}, ${name}!`; }; - 调用方式和其他函数一致:
square(4); // 16
立即执行函数(IIFE)与调用时机
定义后立刻运行,常用于创建私有作用域:
- 写法:
(function() { console.log('run once'); })();或((x) => console.log(x))(123); - 注意括号位置:函数体外加小括号,调用时再加一对小括号
- 箭头函数不能直接 IIFE(需额外包裹),例如:
((x) => x * 2)(5);
基本上就这些。定义看场景选声明、表达式或箭头函数;调用统一用 fn(...) 形式,关键在别混淆提升行为和 this 绑定规则。