Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回不带';不需要返回值_Javascript_Node.js_Emacs_Js2 Mode - Fatal编程技术网

Javascript 返回不带';不需要返回值

Javascript 返回不带';不需要返回值,javascript,node.js,emacs,js2-mode,Javascript,Node.js,Emacs,Js2 Mode,我正在尝试js2模式,这是emacs中的一种javascript IDE。其中一个特性是语法错误突出显示和样式警告。打开后,我注意到我的代码中到处都是这样的警告: anonymous function does not always return a value 当我编写一个负责调用回调的函数时,我通常不会显式地添加返回值。那是坏风格吗 例如: function someFunc (requiredParam, callback) { if (!requiredParam)

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

anonymous function does not always return a value
当我编写一个负责调用回调的函数时,我通常不会显式地添加返回值。那是坏风格吗

例如:

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

    someAsyncMethod(requiredParam, function(someValue) {
        callback(null, someValue)
    })
}
其中
返回
仅用于确保函数的其余部分不会被执行。这样写更好吗

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

    return someAsyncMethod(requiredParam, function(someValue) {
        return callback(null, someValue)
    })
}
function someFunc (requiredParam, callback) {
    if (!requiredParam) { 
        callback("missing required param")
    } else {
        someAsyncMethod(requiredParam, function(someValue) {
            callback(null, someValue)
        })
    }
}
后一种样式是让js2模式离开我的唯一方法。或者应该写成

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

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

这也给了我一个js2通行证,但我总是发现前一种风格阅读效果更好。我是做错了还是js2模式太紧张了

jfriend00的共识是,应该这样写:

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

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

js2模式是正确的。我想写一行程序,这让我的代码不那么清晰

如果回调的调用方希望从回调返回值,则不从回调返回值是唯一错误的样式。如果调用方不需要返回值,那么在回调中返回一些内容是没有意义的。在你的代码中,当你真正有目的地返回一个将要使用的值时,你真的应该只使用
return
语句,否则阅读你的代码的人会很困惑,在返回值中应该放什么。使用
return
停止函数的执行怎么样,为了节省大括号和缩进级别的开销,一个简单的返回语句本身就可以了。但是
returncallback()
返回someAsyncMethod(…)
使它看起来像是故意返回一个值,如果函数没有返回值,我不推荐使用这个值。在我看来,代码意图的清晰性比保存一两行代码更重要。