在不需要 return 值的函数中返回值

Returning values in functions that don't need to return a value

我正在尝试 js2 模式,这是 emacs 中的一种 javascript IDE。其中一项功能是语法错误突出显示和样式警告。自从打开它后,我注意到我的代码中到处都是这个警告:

anonymous function does not always return a value

当我编写一个负责调用回调的函数时,我通常不会显式添加一个 return 值。这种风格不好吗?

例如:

function someFunc (requiredParam, callback) {
    if (!requiredParam) 
        return callback("missing required param")

    someAsyncMethod(requiredParam, function(someValue) {
        callback(null, someValue)
    })
}

其中 return 仅用于确保函数的其余部分不会被执行。是不是写成

更好
function someFunc (requiredParam, callback) {
    if (!requiredParam) 
        return callback("missing required param")

    return someAsyncMethod(requiredParam, function(someValue) {
        return callback(null, someValue)
    })
}

后一种风格是让 js2-mode 离开我的唯一方法。或者应该写成

function someFunc (requiredParam, callback) {
    if (!requiredParam) { 
        callback("missing required param")
    } else {
        someAsyncMethod(requiredParam, function(someValue) {
            callback(null, someValue)
        })
    }
}

这也让我通过了 js2,但我总觉得前一种风格读起来更好。是我做错了还是 js2-mode 太紧张了?

工作中的共识是,从 jfriend00 开始,应该这样写:

function someFunc (requiredParam, callback) {
  if (!requiredParam) { 
    callback("missing required param")
    return
  }

  someAsyncMethod(requiredParam, function(someValue) {
    callback(null, someValue)
  })
}

js2-mode 是对的。我想写一行代码的愿望让我的代码变得不那么清晰了。