【问题标题】:in es6 do we need to add `return` literal, if there are conditions within function在 es6 中,如果函数内有条件,我们是否需要添加 `return` 文字
【发布时间】:2017-05-21 19:12:56
【问题描述】:

就我用过的 es6 而言;我知道在这我们可以省略return字面意思

.then((res) => res.body } // equivalent to return res.body

所以我的问题是,如果函数中有多个条件,那么我们是否需要在条件中写入 return 或者它会完成它的工作? (意味着函数将在没有返回的情况下执行)

.then((res) => {
    if (some_codition) {
        res.send();
    } else {
        if (other_condition)
            res.status(200).json(user);
        else
            res.status(404).json(user);
    }
})

以上是否可行或者我是否需要添加return 作为最佳实践?

【问题讨论】:

  • 我会说添加return 始终是一种好习惯,只有一个语句的函数除外。这是可读性的问题。该方法返回的内容应该立即显而易见。
  • 你所说的“它会完成它的工作”是什么意思?
  • 箭头函数仅在使用简洁的正文语法(由单个表达式组成)时隐式返回任何内容。只要你使用 block ({ … }) 作为 body,它只是一个正常的功能。
  • 您的第一个代码段的右括号不正确。只有当你实际使用括号时它才会起作用。
  • 嘿,我的回答满足你的问题了吗?你能接受吗?如果没有,你会说它缺少什么?谢谢

标签: ecmascript-6 language-features


【解决方案1】:

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

始终在 Promise 中返回值是一个好主意,因为它允许链接。如果您不返回任何内容(未定义),您的承诺链将不会从该点向内继续。

在这种特定情况下,它可能对您有用,因为您正在调用“副作用”函数,即您的网络服务器响应 fn。

【讨论】:

    【解决方案2】:

    区别在于箭头后面有没有大括号。

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

    【讨论】:

      【解决方案3】:
      .then((res) => (somecodition) ?
                              res.send()
                          :
                              res.status(200).json(user)
            )
      

      试试看……

      【讨论】:

      • 我不是在寻找替代方法
      • 如果你使用 => {} 那么在 {} 内你需要使用 return
      • 但是如果函数中除了return语句之外没有主体,它可以不返回。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 1970-01-01
      • 2013-12-02
      • 2016-09-20
      • 2014-06-13
      • 2023-03-07
      相关资源
      最近更新 更多