gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:44:26 24 4
gpt4 key购买 nike

我正在使用 Netbeans 为每个函数添加专业的评论,我写道。因此,我以 /** 开始每一个,然后按 Enter 让 Netbeans 完成以下功能的默认注释方案。

到目前为止,我一直只将它用于 PHP 语言,在这种情况下,Netbeans 总是仅在注释方案中添加 @returns {type} 部分,如果以下 PHP 函数确实包含 return 语句。在所谓的“过程”(不返回任何值的函数)上,这部分缺失。

今天我对 Javascript 函数尝试了同样的事情,Netbeans 添加了 @returns {undefined} 部分到注释方案,即使下面的函数没有返回任何东西。

这让我很困惑。 Netbeans 是否以这种方式建议每个 Javascript 函数都必须返回任何内容?我应该怎么办?忽略(或删除)评论方案部分或遵循建议(如果这是建议的话)并在此类功能末尾添加 return false;,尽管它对我没用?

最佳答案

简短的回答是否定的。

真正的答案是肯定的:必须通知 JS 引擎某些函数已完成其业务,这是由函数返回某些内容来完成的。这也是为什么函数不是“完成”,而是“已返回”
缺少显式 return 语句的函数将返回 undefined,就像一个没有返回值的 C(++) 函数(其签名反射(reflect)了这一点)返回 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 - 每个 Javascript 函数都必须返回一个值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17337064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com