Javascript 返回不带';不需要返回值
我正在尝试js2模式,这是emacs中的一种javascript IDE。其中一个特性是语法错误突出显示和样式警告。打开后,我注意到我的代码中到处都是这样的警告: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)
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(…)
使它看起来像是故意返回一个值,如果函数没有返回值,我不推荐使用这个值。在我看来,代码意图的清晰性比保存一两行代码更重要。