如果我有一个JavaScript函数,它是可能的,我不从每一个代码路径返回一个值,例如:的Javascript功能,不以任何情况下返回值
function f()
{
if (checkSomething())
{
return 42;
}
// no return statement here
}
这是有效的JavaScript或它是否只能偶尔运行(即在某些浏览器中运行时可能会出现问题)?
如果我有一个JavaScript函数,它是可能的,我不从每一个代码路径返回一个值,例如:的Javascript功能,不以任何情况下返回值
function f()
{
if (checkSomething())
{
return 42;
}
// no return statement here
}
这是有效的JavaScript或它是否只能偶尔运行(即在某些浏览器中运行时可能会出现问题)?
是的,它是有效的JavaScript。如果checkSomething()
的计算结果为false
,则它将返回undefined
。
有关更多详细信息,请参阅http://developer.mozilla.org/en/JavaScript/Reference/Functions_and_function_scope。尽管如此,您应该注意,返回不同类型的数据(在这种情况下,整数或undefined
)是不好的做法。
这段JavaScript会起作用,请记住,如果您尝试读取f
的返回值,那么如果没有执行return
语句,它将设置为undefined
。
我个人认为这个代码有点奇怪。如果您要从一个代码路径返回,我建议您也从其他所有可能的代码路径返回。这样,阅读和使用你的代码的人就可以确切地知道会发生什么。
由于Javascript是一种松散的语言与编译的语言相比,你可以摆脱大多数编译语言不允许的东西。所以是的,它可以做到,这只是一个问题,你是否想要做这样的事情。如果您尝试使用C#或类似语言编译此代码,编译器会生成一个错误。
我不想批评你的代码,只是提供一个好的设计建议。函数旨在返回所有代码路径上的值,并由调用代码来检查返回值并决定要执行的操作。您可以检查未定义的返回值或checkSomething()返回false时的返回值,或者可以将该值设置为更有意义的值,以便调用代码在返回时可以检查。你可能有返回值意味着某些东西给调用者。 -1意味着一件事,-2意味着别的东西。
希望这会有所帮助。
+1但是任何东西都是虚假的; 0等人,而不仅仅是错误的。 –
好点,我会更新。 – slaphappy