关于Javascript ES6箭头函数用法的分析,函数声明的几个方式
✅ 几种函数写法对比
// 传统函数声明
function add(a, b) {return a + b;
}// 函数表达式
const add = function(a, b) {return a + b;
};// 箭头函数
const add = (a, b) => a + b;
想学习更多的箭头函数的方法可以看我的博客。
一、函数的方法的形参里写了箭头函数,它是不是 executor?又该怎么判断这个箭头函数的作用?
这个问题涉及到 箭头函数作为回调参数的通用用法。我们来系统讲解:
✅ 一、箭头函数可以作为任何函数的“回调参数”
如果你不懂回调函数,看我的博客。
Javascript什么是回调函数?-CSDN博客
🔍 你经常看到这种用法:
[1, 2, 3].map((item) => item * 2); // 箭头函数是 map 的回调
setTimeout(() => console.log('ok'), 1000); // 箭头函数是定时器的回调
fetch('/api').then(res => res.json()); // 箭头函数是 then 的回调
💡 这些函数中,箭头函数是被“用作参数”,但不是 executor。
❓那怎么判断箭头函数的 身份和作用?
答案是:看它是传给哪个“外层函数”的,然后查这个外层函数的 API 说明(文档 or 源码)。
我们来看几个例子:
🧪 例子 1:new Promise(...)
new Promise((resolve, reject) => {// ✅ 是 Promise 的 executor
});
🔍 因为这个函数被直接传给 Promise
构造器,说明它是 executor。
🧪 例子 2:setTimeout(...)
setTimeout(() => {console.log('3秒后打印');
}, 3000);
🔍 箭头函数是 setTimeout
的第一个参数,用作定时回调,而不是 Promise 的执行器。
🧪 例子 3:你自己写的函数
function runTask(callback) {callback(); // 调用传入的函数
}runTask(() => {console.log('我是回调');
});
🔍 这里箭头函数是传入 runTask()
的回调参数,它是作为函数的 参数传入者,不属于任何内置角色(比如 executor、监听器等)。
📌 总结判断标准
判断方式 | 是不是 executor / 什么作用 |
---|---|
是直接传给 new Promise(...) 的函数 | ✅ 是 executor(执行器) |
是传给 then() , map() , forEach() 等的 | ❌ 是回调函数(callback),不是 executor |
是你自己写的函数的参数 | ❌ 是回调函数,由你决定它干什么 |
是监听器,如 addEventListener(fn) | ❌ 是事件处理器 |
✅ 一句话总结
箭头函数是做什么的,要看它是“传给谁”的!函数身份由“调用它的函数”决定。
✏️ 加练小题
你能判断下面箭头函数的作用吗?👇
doSomething(() => {console.log("我是谁?");
});