在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的最佳做法?

+1

我会说,'添加return'是一个很好的做法始终,除了对于只有一条语句的功能。这是一个可读性问题。应该立即明白,该方法返回一些东西。 – Sulthan

+0

你是什么意思“*它会做它的工作*”? – Bergi

+1

当您使用简明正文语法(由单个表达式组成)时,箭头函数只会隐式返回任何内容。只要你为身体使用* block *('{...}'),这只是一个正常的功能。 – Bergi

是的,你必须手动返回一个值。如果你不这样做,它将返回undefined

始终在Promise中返回值是一个好主意,因为允许链接。如果你没有任何回报(未定义),你的承诺链将不会从这一点开始继续。

在这个特定情况下,它可能适用于您,因为您正在调用一个“副作用”功能,这是您的网络服务器响应fn。

.then((res) => (somecodition) ? 
         res.send() 
        : 
         res.status(200).json(user) 
    ) 

尝试......

+0

如果您使用=> {},那么我不在寻找方法替代 –

+0

{}然后在需要使用的{}内使用return – UXDart

+0

,但如果除了return语句之外的函数中没有主体, –

不同之处在于你是否在箭头之后有大括号。

.then(res => res.x) // Works 
.then(res => {return res.x;}) // Works 
.then(res => {res.x;}) // Your function returns undefined.