在es6中我们是否需要添加`return`文字,如果函数中有条件
问题描述:
就我所用的es6而言;我才知道,在这一点,我们可以省略return
文字像在es6中我们是否需要添加`return`文字,如果函数中有条件
.then((res) => res.body } // equivalent to return res.body
所以我的问题是,如果有多个条件中的函数,然后做我们需要写的条件内返回,否则将做它的工作? (指功能将执行不返回)
.then((res) => {
if (some_codition) {
res.send();
} else {
if (other_condition)
res.status(200).json(user);
else
res.status(404).json(user);
}
})
将上述工作或者我需要添加return
的最佳做法?
答
是的,你必须手动返回一个值。如果你不这样做,它将返回undefined
。
始终在Promise中返回值是一个好主意,因为允许链接。如果你没有任何回报(未定义),你的承诺链将不会从这一点开始继续。
在这个特定情况下,它可能适用于您,因为您正在调用一个“副作用”功能,这是您的网络服务器响应fn。
答
.then((res) => (somecodition) ?
res.send()
:
res.status(200).json(user)
)
尝试......
答
不同之处在于你是否在箭头之后有大括号。
.then(res => res.x) // Works
.then(res => {return res.x;}) // Works
.then(res => {res.x;}) // Your function returns undefined.
我会说,'添加return'是一个很好的做法始终,除了对于只有一条语句的功能。这是一个可读性问题。应该立即明白,该方法返回一些东西。 – Sulthan
你是什么意思“*它会做它的工作*”? – Bergi
当您使用简明正文语法(由单个表达式组成)时,箭头函数只会隐式返回任何内容。只要你为身体使用* block *('{...}'),这只是一个正常的功能。 – Bergi