每个Javascript函数都必须返回一个值吗?

我使用Netbeans来为每个函数添加类似专业的注释。 所以我用/**开始每一个,然后按Enter让Netbeans实现以下function的默认评论scheme。

到目前为止,我一直只使用这个PHP语言,在这种情况下,Netbeans总是只在评论scheme中添加@returns {type}部分,如果下面的PHP函数确实包含return语句。 在所谓的“程序”(function不返回任何价值)这个部分是失踪。

今天,我尝试了同样的事情为JavaScript函数和Netbeans添加@returns {undefined}部分评论计划,即使下面的函数不返回任何东西。

这使我困惑。 Netbeans是这样build议的吗,每个Javascript函数都必须返回任何东西? 我该怎么办? 忽略(或删除)该评论scheme部分或遵循build议(如果这是build议)并添加return false; 在这种function的最后,虽然对我来说是没用的?

简短的答案是否定的。

真正的答案是肯定的:JS引擎必须被通知一些函数已经完成了它的业务,这是通过函数返回一些东西来完成的。 这也是为什么,而不是“完成” ,function被称为“已经返回”
缺less显式返回语句的函数将返回undefined ,就像一个没有返回值的C(++)函数所说的(并且其签名反映了这个)返回void

 void noReturn()//return type void { printf("%d\n", 123); return;//return nothing, can be left out, too } //in JS: function noReturn() { console.log('123');//or evil document.write return undefined;//<-- write it or not, the result is the same return;//<-- same as return undefined } 

而且,在JS中,就像大多数每种语言一样,你可以自由地忽略一个函数的返回值,这是非常重要的:

 (function() { console.log('this function in an IIFE will return undefined, but we don\'t care'); }()); //this expression evaluates to: (undefined);//but we don't care 

在一些非常低的水平上,回报被翻译成某种跳跃。 如果一个函数完全没有返回任何东西 ,那么就没有办法知道什么时候调用下一个函数,或者调用事件处理程序等等。

所以回顾一下:不,JS函数不需要返回任何代码。 但是就JS引擎而言:一个函数总是返回一些东西,无论是显式地通过return语句还是隐式的。 如果函数隐式返回,则其返回值将始终未定义。

不, 退货是没有必要的。

但没有回报实际上返回undefined

不,你不必为每个function返回一些东西。 这是可选的,直到你如何编写你的代码逻辑。