网络开发人员每天都在与函数打交道。但你知道一个什么都不返回的函数会返回什么吗?这听起来很奇怪,但让我们来弄清楚。

"一个不返回任何东西的函数会返回什么?"
我曾经在一次求职面试中遇到这个问题,我很困惑。一方面,这个问题很简单,但你知道面试时的情况。我开始怀疑自己,说我不知道正确答案 :D
让我们转向Chrome开发工具中的控制台(F12-控制台标签)。开发人员经常用它来记录应用程序。而且在这个控制台中,你还可以写JavaScript代码,这些代码将被立即执行。

作者的屏幕截图
当我写下console.log(1)并按下回车键时,日志输出如预期般出现。然而,下一行显示未定义。为什么会有这样的双重输出?
这是因为开发者工具控制台先执行代码,然后显示返回值。它对所有的函数,甚至对变量的赋值都是如此。让我们看看一个自定义函数的例子。

作者的屏幕截图
正如你所看到的,输出显示了上面解释的行为。首先,我把函数分配给myFunction变量。这个操作没有返回值,所以我们看到的是未找到的输出。在下一行,我调用了这个函数,然后我们看到console.log输出 "代码执行",最后是返回语句的返回值输出。
如果我去掉返回语句,我们将看到以下输出。

作者的屏幕截图
只要没有返回语句,函数调用后的输出就是未定义的。
要返回默认值以外的值,一个函数必须有一个返回语句,指定要返回的值。没有返回语句的函数将返回一个默认值。如果是用new关键字调用的构造函数,默认值是其this参数的值。对于所有其他函数,默认的返回值是未定义的。
虽然这种行为在文档中有所描述,但许多新手开发者并不知道,就像我曾经不知道的那样。感谢这些例子,我们现在明白了它是如何工作的。
我希望这能对某人有所帮助。你在工作面试中遇到过什么令人兴奋的问题?我很想读一读。