当在Node.JS中使用callback时,“return”是必要/有用的吗?

例如,这两个实际上是一样的吗?

someFunction(val, callback){ callback(val); }; 

 someFunction(val, callback){ callback(val); return; // necessary? }; 

是的,他们是一样的。 如果你的函数没有返回值,那么你可以省略return语句或者不带参数的使用它; 在这两种情况下,对函数的调用都返回“undefined”。

 function f1(){}; typeof(f1()); // => "undefined" function f2(){return;}; typeof(f2()); // => "undefined" 

虽然他们是相同的,你会不时看到类似下面的东西:

 someFunction(val, callback){ if (typeof val != 'object') return callback(new Error('val must be an object')); callback(null, val); }; 

换句话说,退货是用来尽早“突破”function的。 大多数情况下,我已经看到,使用条件。 你testing一个错误条件(如果出现错误,提前返回callback),然后避免将函数的其余部分包装在else子句中。

在一般的JavaScript意义上,是的,它们是一样的 – 我不明白为什么node.js会有所不同。

在这两种情况下someFunction()的返回值都是undefined 。 函数内是否有callback是无关紧要的。

除了你不能有一个名为var的正式参数,你的两个片段是相同的,并以相同的方式工作。 如果没有指定,ECMAscript中的每个function都会返回undefined

他们是一样的; 你不应该使用return ,因为放在那里会让读者感到困惑,因为这是不必要的。

注意 :在某些语言(但可能不是JavaScript)中,如果启用了尾部调用优化,则甚至可能不会执行return语句(也就是说,编译器从堆栈中删除函数计划做其他事情)。 再一次,在标准的JavaScript的任何实现可能不相关。