ES6 箭头函数: {}(大括号)的使用与否,意义不同!

61 阅读2分钟

在 ES6 箭头函数中,{}(大括号)的使用与否,主要影响函数的返回值行为代码块的执行逻辑,具体区别如下:

1. 不写 {}:隐式返回(简洁体)

当箭头函数后直接跟表达式(没有大括号)时,函数会自动返回该表达式的结果,无需显式写 return。这种写法适用于逻辑简单、只有一行返回值的场景。

示例

// 不写 {},直接返回表达式结果
const add = (a, b) => a + b; 
console.log(add(2, 3)); // 输出:5(自动返回 a + b 的结果)
const double = num => num * 2; // 单个参数可省略括号,同样隐式返回
console.log(double(4)); // 输出:8
const getObj = () => ({ name: 'foo' }); // 返回对象时需用 () 包裹(避免被解析为代码块)
console.log(getObj()); // 输出:{ name: 'foo' }

特点

  • 只能写一个表达式(不能包含多句代码)。
  • 自动返回表达式的结果,无需 return

2. 写 {}:显式返回(块体)

当箭头函数使用 {} 包裹代码时,代表函数体是一个代码块,可以包含多行代码、条件判断、循环等复杂逻辑。此时,必须通过 return 显式指定返回值;若没有 return,函数默认返回 undefined

示例

// 写 {},需显式 return 返回值
const add = (a, b) => {
  const sum = a + b;
  return sum; // 必须用 return 才能返回结果
};
console.log(add(2, 3)); // 输出:5

// 没有 return 时,默认返回 undefined
const log = (msg) => {
  console.log(msg); // 仅执行打印,无 return
};
console.log(log('hello')); // 输出:undefined(函数返回值)

// 包含复杂逻辑(条件判断)
const getGrade = (score) => {
  if (score >= 90) {
    return 'A';
  } else if (score >= 60) {
    return 'B';
  } else {
    return 'C';
  }
};
console.log(getGrade(85)); // 输出:B

特点

  • 可包含多行代码、复杂逻辑(条件、循环等)。
  • 必须用 return 显式返回值,否则返回 undefined

总结

写法适用场景返回值规则
不写 {}单行简单表达式自动返回表达式结果(隐式返回)
写 {}多行代码、复杂逻辑需显式用 return 返回,否则为 undefined

注意:当不写 {} 却需要返回对象时,必须用小括号 () 包裹对象(如 () => ({ key: value })),否则 JavaScript 会将 {} 解析为代码块,导致语法错误。