You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

箭头函数中()、{}、({})的用法区别及参数解构疑问

箭头函数字面量{}与()包裹的区别,以及参数({})的用法解析

嘿,这个问题问到点子上了,我来给你一步步拆解明白~

一、箭头函数体用{}和()包裹的核心区别

箭头函数的这两种写法本质是为了区分显式函数体和隐式返回:

  • 用()包裹函数体:这是隐式返回的语法糖,不需要写return关键字,会直接返回括号内表达式的结果。不过要注意,如果返回的是对象字面量,必须用()把对象包起来,不然JS会把{}当成函数体的代码块,比如() => ({ name: 'Alice' })才会返回一个对象,而() => { name: 'Alice' }不会返回任何东西(因为被解析成了空函数体)。
  • 用{}包裹函数体:这是标准的显式函数体,里面可以写多行代码(比如条件判断、循环、变量声明),但如果需要返回值,必须手动写return关键字。比如:
    const calculate = (a, b) => {
      const sum = a + b;
      return sum * 2;
    }
    

二、示例中参数用({ filter, children })的原因

这是ES6的对象解构赋值语法,专门用来简化对象属性的访问:
在React组件中,组件接收的props本质是一个对象,比如你的FilterLink组件实际会收到这样的参数:{ filter: 'SHOW_ALL', children: 'All' }。

  • 如果写成(props),那你得每次用props.filter、props.children来访问属性;
  • 而用({ filter, children }),相当于直接从props对象里把filter和children这两个属性“拆”出来,变成单独的变量使用,代码瞬间简洁很多,不用反复写props.前缀。

对应你的示例代码,解构后直接用filter来拼接路由路径,用children作为NavLink的子元素,逻辑清晰又省代码~

内容的提问来源于stack exchange,提问作者Max Wolfen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:19:01