Javascript函数,在每种情况下都不返回值

时间:2011-07-25 14:55:08

标签: javascript

如果我有一个javascript函数,我可能不会从每个代码路径返回一个值,例如:

function f()
{
  if (checkSomething())
  {
    return 42;
  }
  // no return statement here
}

这是有效的javascript还是只是偶然发挥作用(即在某些浏览器中运行时可能会出现问题)?

3 个答案:

答案 0 :(得分:12)

是的,它是有效的javascript。如果checkSomething()评估为false,则会返回undefined

有关详细信息,请参阅http://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope

尽管如此,你应该注意到返回不同类型的数据(在这种情况下,是一个整数或undefined)是不好的做法。

答案 1 :(得分:3)

由于与编译的Javascript相比,Javascript是一种松散的语言,因此您可以逃避大多数编译语言不允许的事情。所以,是的,它可以完成,这只是你想要做这样的事情的问题。如果您尝试使用C#或类似语言编译此代码,编译器将生成错误。

我不是要批评你的代码,只是提出一个好的设计建议。函数旨在返回所有代码路径上的值,并且由调用代码来检查返回值并决定要执行的操作。您可以检查undefined的返回值或checkSomething()返回false时的值,或者您可以将值设置为调用代码在返回时可以检查的更有意义的值。您可能有返回值表示调用者的某些事情。 -1表示一件事,-2表示其他东西。

希望这有帮助。

答案 2 :(得分:2)

这个JavaScript会起作用,请记住,如果您尝试读取f的返回值,如果没有执行undefined语句,它将被设置为return

我个人认为这段代码有点奇怪。如果您要从一个代码路径返回,我建议您从所有其他可能的代码路径返回。这样,阅读和使用您的代码的人确切地知道会发生什么。