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

标签 javascript return-value netbeans-7

我正在使用 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/

相关文章:

javascript - 为什么 jQuery 必须接收 2 个对象 : body & html when scrolling whole page with animation?

rust - 更改返回结果的函数的返回类型

c - 当第三方 C 函数返回一个指针时,你应该自己释放它吗?

android - 我在 NetBeans 中看不到图形布局 android

java - Jackcess "NoClassDefFoundError"异常

javascript - 使用 javascript 将视频上传到 facebook,无需 php

javascript - 循环 file_put_contents 偶尔会触发 "failed to open stream"警告

javascript - 如何克隆 div jquery html

c++ - 为什么 operator++ 返回一个非常量值?

java - 我的 netbeans bin 文件夹在哪里?