Javascript—调用回调时终止函数执行的样式
我们经常需要确保在回调完成后执行不会返回到函数我的问题是,这两种风格在效果上有没有细微的差别,或者它们是完全相同的强>Javascript—调用回调时终止函数执行的样式,javascript,node.js,Javascript,Node.js,我们经常需要确保在回调完成后执行不会返回到函数我的问题是,这两种风格在效果上有没有细微的差别,或者它们是完全相同的 function myFunction(foo, callback) { if(foo) { callback(err, true); //Here return; //Here } bar(); } 以及: 编辑:对不起,我意识到我的问题不是很清楚。我所说的情况是,我不关心返回什么(因为它不会被同步使用)
function myFunction(foo, callback) {
if(foo) {
callback(err, true); //Here
return; //Here
}
bar();
}
以及:
编辑:对不起,我意识到我的问题不是很清楚。我所说的情况是,我不关心返回什么(因为它不会被同步使用),但返回只是为了确保回调函数完成后,函数中不会继续执行。这完全取决于您想要返回什么
如果要返回回调的值,请使用第二种方法,首先是< /P> < P>作为编码风格,如果你想避免一个函数内的<代码>返回< /代码> s,这是一些人认为是坏事的,那么
function myFunction(foo, callback) {
if(foo) {
callback(err, true);
} else {
bar();
}
}
嗯,是的,我想我需要把我的问题表达得更清楚一点。我所说的情况是,我不关心返回的是什么(因为它不会被同步使用),但返回只是为了确保函数中不会继续执行,在回调函数完成后。那么这两个函数是完全相同的。@UpTheCreek在这种情况下,第一个选项会更好,因为它更简单explicit@ArunPJohny-谢谢。是的,我更喜欢第二个,因为它不太冗长。但我想从现在开始我会选择第一个,因为它避免了这个答案中所提出的歧义。这个问题可以归结为是否应该从函数中返回某些内容。@tracevipin-嗯,函数不需要返回任何内容,但它是否返回某些内容并不重要。我不确定这个问题是否可以简单地简化为这个问题。@tracevipin-作为一个例子,看一下本页上的最后一个代码块:-似乎错误回调不需要“返回”任何东西,但它们使用的是第二种样式。是的,我同意,但我个人不喜欢跨越整个函数的条件块(可能很大),因为它们更难阅读,并且会导致更多的大括号和缩进。
return foo?callback(err,true):bar();
?heh:)对于短函数,我对if-else并没有问题,但对于长函数,若要寻找匹配的大括号,那个就有点麻烦了。
function myFunction(foo, callback) {
if(foo) {
callback(err, true);
} else {
bar();
}
}