如何确保我的所有JavaScript函数都返回值?

时间:2012-01-11 13:14:09

标签: javascript jslint

由于函数中缺少return,我发生了很多错误。你看,当你编写的大部分代码都是Ruby时,很容易忘记显式返回。

所以我想使用类似于JSlint(我已经使用过)的东西来检查所有函数是否返回了什么。是的,我认为最好在不需要的时候明确地返回一些东西,而不是寻找丢失的回报。

那么,有没有可以检查退货的工具?或者我可以在运行时以简单的方式断言它?

请不要建议Coffeescript,我知道它的存在。

4 个答案:

答案 0 :(得分:4)

JSUnit示例:

<script language="javascript" src="jsUnitCore.js"></script>
<script language="javascript">
  function testWithValidArgs() {
      assertEquals("someFunction should return something", "Expected REturn Value", someFunction(2, 3));
  }
</script>

答案 1 :(得分:1)

只需一致地添加return即可。但说实话,JSlint是一个非常严格的检查工具。如果您没有返回值,除非您尝试使用函数的响应来定义变量,否则永远不会出现错误,但在这种情况下,添加return语句不仅仅是逻辑。

但是,如果您仍然致力于在每个函数中都有return语句,那么您应该从一开始就添加它们。没有工具可以添加它们。

答案 2 :(得分:1)

我不知道任何可以开箱即用的工具。但写一个并不难。

首先使用UglifyJS将您的代码解析为语法树。编写一个递归函数来检查所有代码,寻找函数定义。对于您找到的每个功能,请查看最后一个语句。如果那个不是return语句,则打印警告。

答案 3 :(得分:0)

(评论太久了。)

当函数没有(有意义的)返回值时返回某些东西的问题是它会产生误导,除非它返回undefined,这会使目的失效。

如果我看到return,我必须在方法和通话网站上推断代码。

在函数中我必须确定它是否返回任何其他内容,为什么它返回它所做的值,等等。唯一真正的方法就是返回一个常量,使得它显然不是真的< / em>返回任何内容,只是为了满足返回某事的愿望。

在呼叫站点,如果忽略返回值,我需要了解原因,以及是否可以这样做。如果我知道每个函数返回一些东西,那么我必须检查函数以查看它是否返回该特殊值,或者完成上述过程。

我几乎将我的函数命名为"function""method"命名空间,作为区分符。这将允许自动测试每个命名空间,以确保所有函数返回有用的东西,所有方法特别,并且将提供关于调用者应该期望的源级线索。