是否每个Javascript函数都必须返回一个值
Does every Javascript function have to return a value?
我正在使用Netbeans为每个函数添加专业的注释,我写道。所以我用/**
开始每一个,然后按Enter
让Netbeans完成下面函数的默认注释方案。
到目前为止,我一直只将其用于PHP语言,在这种情况下,如果以下PHP函数真的包含return
语句,Netbeans总是只在注释方案中添加@returns {type}
部分。在所谓的"过程"(不返回任何值的函数)中,缺少此部分。
今天,我为Javascript函数尝试了同样的方法,Netbeans在注释方案中添加了@returns {undefined}
部分,尽管下面的函数并没有返回任何内容。
这让我很困惑。Netbeans是否这样建议,每个Javascript函数都必须返回任何东西?我该怎么办?忽略(或删除)那个注释方案部分或遵循建议(如果这是建议的话),并在该函数的末尾添加return false;
,尽管这对我来说没有用?
简短的答案是否定的
real的答案是肯定的:JS引擎必须被通知某个函数已经完成了它的业务,这是由函数返回一些东西来完成的。这也是为什么一个函数被称为"已返回"而不是的"已完成"
缺少显式返回语句的函数将返回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
语句显式返回,还是隐式返回。如果函数隐式返回,则其返回值将始终是未定义的。
否,不需要return
。
如果未指定return
语句,则返回undefined
。
每个Javascript函数都必须返回一个值吗?
不,他们没有。的确,在规范的深处,这些都有轻微的不同:
function foo() {
}
function foo() {
return;
}
function foo() {
return undefined;
}
但调用的结果是相同的:CCD_ 13。因此,从务实的角度来看:
- 您不必编写
return
,只需让代码执行即可;从末端掉下来";函数的 - 如果您返回
undefined
,具体地说,您可以只写return;
- 当调用一个函数时,您无法(在代码中)判断执行是落在末尾、以
return;
结束还是以return undefined;
结束;它们在您的调用代码中看起来完全相同
关于规范:特别是,当一个函数的执行落在末尾时,在规范中,它是一个";正常的";完成但CCD_ 19和CCD_;返回";具有关联值(undefined
)的补全,该值(稍微)不同。但调用函数的语义消除了这种差异,比如:
- 如果结果。[[Type]]为
return
,返回NormalComplete(result.[Value]])- ReturnIfAbrupt(结果)
- 返回NormalComplete(未定义)
所以在代码中没有什么区别。
不,您不必为每个函数返回一些东西。它是可选的,取决于您如何编写代码逻辑。
- 获取最后一个返回值
- 使用谷歌地图:一个返回undefined的自定义javascript函数
- eval(“{}”) vs eval (“x={}”),一个返回 undefined,而另一个返回 {}
- 如何使用 jQuery 创建一个返回 SQL 结果集的函数
- JavaScriptAJAX调用一个返回XML的PHP
- 在什么情况下,您会使用一个返回另一个函数(Javascript)的函数
- 如何创建一个返回等待EventEmitter的promise的函数
- Angularjs模拟一个返回$http承诺的函数
- 如何编写一个返回单个值的java脚本函数,并将返回的值分配给我们想要的任何变量
- Jasmine-测试一个返回localStorage项的服务
- 创建一个返回函数
- 给定子域中的cookie,您可以编写一个返回代理服务器主机名的javascript函数吗
- 在Javascript中给Number添加一个返回变量
- 如何在angularjs中编写一个返回承诺的异步方法
- HTML4和HTML5 -如果没有导航,我怎么知道是否有一个“返回”状态
- 如何在JavaScript中创建一个返回本地文本文件值的函数?
- 如何声明一个javascript变量并将其值赋给一个返回布尔值的php文件
- 如何在异步测试中测试一个返回承诺的存根
- 从php传递一个返回值给js
- 输入一个返回的可观察对象