每个Javascript函数都必须返回一个值吗?
我写的是,我正在使用Netbeans向每个函数添加类似专业的注释。因此,我从每一个开始/**
,然后按Enter
来让Netbeans完成用于以下功能的默认注释方案。
到现在为止,我一直只在PHP语言中使用它,在这种情况下@returns
{type},如果遵循PHP函数确实包含了return
声明,则Netbeans始终仅在注释方案中添加部分。在所谓的“过程”(不返回任何值的函数)上,缺少此部分。
今天,我为Javascript函数尝试了同样的事情,@returns
{undefined}即使跟随函数不返回任何内容,Netbeans也在注释方案中添加了一部分。
这让我感到困惑。Netbeans是否以这种方式建议每个Javascript函数都必须返回任何内容?我该怎么办?忽略(或删除)该注释方案的一部分或遵循建议(如果完全是建议),并return
false;在此功能的末尾添加,尽管这对我来说毫无用处?
回答:
最简洁的答案是不。
在 真正的 答案是肯定的:JS引擎必须要通知一些功能已经完成了它的业务,这是由函数返回有所作为。这也是为什么说函数 “已返回” 而不是
“完成”的 原因。 缺少显式return语句的函数将返回,例如说没有返回值的C(++)函数(其签名反映了这一点)将返回: __
undefined``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
语句来显式还是隐式地。如果函数隐式返回,则其返回值将始终是未定义的。
以上是 每个Javascript函数都必须返回一个值吗? 的全部内容, 来源链接: utcz.com/qa/411392.html