非函数调用场景下JavaScript中"=>"的含义是什么?
关于箭头函数作为参数传递的解惑
核心本质:箭头函数就是匿名函数的简化写法
你熟悉的这种写法:
const myFunc = () => "value";
本质是把一个箭头函数赋值给变量,后续通过变量名调用这个函数。而findElement([1, 2, 3, 4], num => num % 2 === 0)里的箭头函数,只是跳过了“赋值给变量”这一步,直接把函数本身作为参数传递给findElement而已,两者完全等价于:
// 先把箭头函数赋值给变量 const isEven = num => num % 2 === 0; // 再把变量(也就是函数)传给findElement findElement([1, 2, 3, 4], isEven);
拆解你看到的箭头参数
num => num % 2 === 0这个箭头函数的逻辑很简单:
- 接收一个参数
num - 返回
num % 2 === 0的结果(布尔值,判断num是不是偶数)
你的findElement函数为什么能运行
你的函数定义function findElement(arr, func) { ... }里的第二个参数func,就是用来接收传递过来的那个箭头函数的。整个执行流程是:
- 循环遍历传入的数组
arr的每个元素 - 把当前元素赋值给
num - 调用
func(num)——也就是调用那个判断偶数的箭头函数,把当前元素传进去,得到true或false - 如果
func(num)返回true(找到偶数),立刻返回这个元素,函数终止
这种把函数作为参数传递的模式,在JavaScript里叫回调函数,很多原生数组方法(比如arr.filter()、arr.map())都是基于这个逻辑工作的,箭头函数只是让这种写法更简洁而已。
内容的提问来源于stack exchange,提问作者szymonhimself
相关产品推荐
相关产品推荐

