() => X vs () => { return X }

2022-11-20 07:06:35 +08:00
 Aloento
RT ,这俩有啥区别吗?

比如
useMemo(() => subscription(x), [x]);
3274 次点击
所在节点    JavaScript
13 条回复
kkll7766
2022-11-20 07:59:31 +08:00
qeqv
2022-11-20 08:02:41 +08:00
问之前不自己试一下吗?
qeqv
2022-11-20 08:05:10 +08:00
@qeqv 哦,我弄错了。这两个语法上是一样的,不过注意第一种不能用逗号返回值。不过你这里逗号看作是函数参数的分隔,所以没问题
horseInBlack
2022-11-20 09:00:02 +08:00
// 箭头函数的一般写法
const arrowFunction1 = () => {
return 123;
};

// 如果函数只有一个返回值,可以在箭头后只写返回值
const arrowFunction2 = () => 123;

// 如果返回值类型为对象,对象的括号会和函数体的括号冲突,这时候可以用圆括号包住花括号
const arrowFunction3 = () => ({
a: "hello",
});
netnr
2022-11-20 09:17:25 +08:00
{} 可以写复杂的逻辑再 return
sweetcola
2022-11-20 09:18:55 +08:00
区别就是第一种简洁,好看,写起来会比第二种爽,有种畅快清凉感
buxudashi
2022-11-20 10:11:15 +08:00
区别就是。当有多行时。用后面的。当有一行时,简写为第一个。

你学废了吗
justin2018
2022-11-20 10:52:16 +08:00
箭头函数 - JavaScript | MDN
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Functions/Arrow_functions#%E5%87%BD%E6%95%B0%E4%BD%93

在一个简写体中,只需要一个表达式,并附加一个隐式的返回值。在块体中,必须使用明确的 return 语句。
Justin13
2022-11-20 11:39:29 +08:00
没区别,后者方便打断点
sankemao
2022-11-20 19:37:01 +08:00
我喜欢后面的
yaphets666
2022-11-21 11:22:52 +08:00
有区别的,如果 X 是{1:2},第一种就不行了,需要加()
libook
2022-11-21 11:57:17 +08:00
题主的意思是问箭头函数右侧是用表达式和用块的区别吗?
程序上没啥区别,用表达式也是隐含有一个块级作用域并自动 returen ,也就是说实际上表达式写法会被处理成块写法。需要注意的是,右侧代码被解析成函数块的优先级高于 JSON 块,也就是说如果你要用表达式写法返回一个 JSON ,得外面套个括号,比如 ()=>({a:1}) 。

其余的就是可读性问题了,如果你打算在箭头函数后面拼接三元运算符之类的,可能读起来会比较难理解。
xingguang
2022-11-21 15:52:48 +08:00
就是简洁一些,如果返回的是个对象还可以这样写
```js
() => ({ x:'xxx' });
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/896514

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX