例如,这两者是否实际相同?
someFunction(val, callback){
callback(val);
};
和
someFunction(val, callback){
callback(val);
return; // necessary?
};
答案 0 :(得分:8)
虽然它们是相同的,但您会不时看到以下内容:
someFunction(val, callback){
if (typeof val != 'object')
return callback(new Error('val must be an object'));
callback(null, val);
};
换句话说,return用于提前“破解”函数。大多数情况下,我已经看到与条件一起使用;你测试一个错误条件(如果有错误则提前返回回调),然后避免必须将函数的其余部分包装在else
子句中。
答案 1 :(得分:5)
是的,它们是一样的。如果你的函数没有返回一个值,那么你可以省略return语句或者在没有参数的情况下使用它;在这两种情况下,对函数的调用都返回“undefined”。
function f1(){};
typeof(f1()); // => "undefined"
function f2(){return;};
typeof(f2()); // => "undefined"
答案 2 :(得分:1)
在一般的JavaScript意义上,是的,它们是相同的 - 我不明白为什么node.js会有所不同。
在这两种情况下,someFunction()
的返回值都为undefined
。函数内是否有回调是无关紧要的。
答案 3 :(得分:1)
除了您不能拥有名为var
的正式参数之外,您的两个片段是相同的并且以相同的方式工作。如果未指定,ECMAscript中的每个function
隐含都会返回undefined
。
答案 4 :(得分:0)
他们是一样的;你应该不使用return
,因为把它放在那里会让读者感到困惑,因为它是不必要的。
sidenote :在某些语言(但可能不是javascript)中,如果启用了尾调用优化,则甚至可能无法执行return语句(也就是说,编译器删除函数是合理的如果你从未计划做任何事情,一旦你离开它就从堆栈中)。再一次,可能与标准javascript的任何实现都无关。